首頁 web前端 js教程 nodejs中exports與module.exports的差異詳細介紹_基礎知識

nodejs中exports與module.exports的差異詳細介紹_基礎知識

May 16, 2016 pm 05:43 PM

你肯定非常熟悉nodejs模組中的exports對象,你可以用它來創建你的模組。例如:(假設這是rocker.js檔)

複製程式碼 程式碼如下:
console.log('My name is Lemmy Kilmister');
};

在另一個檔案中你這樣引用

複製程式碼 程式碼如下:
var rocker = require('./rocker.js');
rocker.name(); // 'My name is Lemmy Kilmister'


那到底是Module.exports是什麼呢?它是否合法呢? 其實,Module.exports才是真正的接口,exports只不過是它的一個輔助工具。 最終回傳給呼叫的是Module.exports而不是exports。

所有的exports收集到的屬性和方法,都賦值給了Module.exports。當然,這有個前提,就是Module.exports本身不具備任何屬性和方法。如果,Module.exports已經具備一些屬性和方法,那麼exports收集來的資訊將被忽略。

修改rocker.js如下:

複製程式碼 程式碼如下:

程式碼如下:



module.exports = 'ROCK IT!';
exports.name = function() {
console.log('My name is Lemmy Kilmister');
複製程式碼


程式碼如下:


var rocker = require( './rocker.js');
rocker.name(); // TypeError: Object ROCK IT! has no method 'name'


發現報錯:物件“ROCK IT!”沒有name方法
rocker模組忽略了exports收集的name方法,回傳了一個字串「ROCK IT!」。由此可知,你的模組不一定非得回傳「實例化物件」。你的模組可以是任何合法的javascript物件--boolean, number, date, JSON, string, function, array等等。
你的模組可以是任何你設定給它的東西。如果你沒有明確的給Module.exports設定任何屬性和方法,那麼你的模組就是exports設定給Module.exports的屬性。 下面範例中,你的模組是一個類別:
複製程式碼


程式碼如下:



程式碼如下:

module.exports = function(name, age) {
this.name = name;
this.age = age; this.about = function() { console. log(this.name ' is ' this.age ' years old'); }; };
可以這樣應用它:




複製程式碼


程式碼如下:下面範例中,你的模組就是一個陣列:



複製程式碼
可以這樣應用它:



複製代碼



複製代碼複製代碼



複製代碼
複製代碼複製代碼複製代碼複製代碼 程式碼如下: var rocker = require('./rocker.js'); console.log('Rockin in heaven: ' rocker[2]); //Rockin in heaven: Ronnie James Dio 現在你明白了,如果你想你的模組是一個特定的類型就用Module.exports。如果你想的模組是典型的「實例化物件」就用exports。 為Module.exports新增屬性類似於為exports新增屬性。例如: 複製程式碼 程式碼如下: module.exports.name = function() { console.log('My name is Lemmy Kilmister'); };
同樣,exports是這樣的
複製程式碼 程式碼如下:


程式碼如下:

exports.name = function() {
console.log('My name is Lemmy Kilmister'); }; 請注意,這兩種結果並不想同。前面已經提到module.exports是真正的接口,exports只不過是它的輔助工具。建議使用exports導出,除非你打算從原來的「實例化物件」改變成一個類型。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何創建和發布自己的JavaScript庫? 如何創建和發布自己的JavaScript庫? Mar 18, 2025 pm 03:12 PM

文章討論了創建,發布和維護JavaScript庫,專注於計劃,開發,測試,文檔和促銷策略。

如何在瀏覽器中優化JavaScript代碼以進行性能? 如何在瀏覽器中優化JavaScript代碼以進行性能? Mar 18, 2025 pm 03:14 PM

本文討論了在瀏覽器中優化JavaScript性能的策略,重點是減少執行時間並最大程度地減少對頁面負載速度的影響。

前端熱敏紙小票打印遇到亂碼問題怎麼辦? 前端熱敏紙小票打印遇到亂碼問題怎麼辦? Apr 04, 2025 pm 02:42 PM

前端熱敏紙小票打印的常見問題與解決方案在前端開發中,小票打印是一個常見的需求。然而,很多開發者在實...

如何使用瀏覽器開發人員工具有效調試JavaScript代碼? 如何使用瀏覽器開發人員工具有效調試JavaScript代碼? Mar 18, 2025 pm 03:16 PM

本文討論了使用瀏覽器開發人員工具的有效JavaScript調試,專注於設置斷點,使用控制台和分析性能。

如何有效地使用Java的收藏框架? 如何有效地使用Java的收藏框架? Mar 13, 2025 pm 12:28 PM

本文探討了Java收藏框架的有效使用。 它強調根據數據結構,性能需求和線程安全選擇適當的收集(列表,設置,地圖,隊列)。 通過高效優化收集用法

如何使用源地圖調試縮小JavaScript代碼? 如何使用源地圖調試縮小JavaScript代碼? Mar 18, 2025 pm 03:17 PM

本文說明瞭如何使用源地圖通過將其映射回原始代碼來調試JAVASCRIPT。它討論了啟用源地圖,設置斷點以及使用Chrome DevTools和WebPack之類的工具。

開始使用Chart.js:PIE,DONUT和BUBBLE圖表 開始使用Chart.js:PIE,DONUT和BUBBLE圖表 Mar 15, 2025 am 09:19 AM

本教程將介紹如何使用 Chart.js 創建餅圖、環形圖和氣泡圖。此前,我們已學習了 Chart.js 的四種圖表類型:折線圖和條形圖(教程二),以及雷達圖和極地區域圖(教程三)。 創建餅圖和環形圖 餅圖和環形圖非常適合展示某個整體被劃分為不同部分的比例。例如,可以使用餅圖展示野生動物園中雄獅、雌獅和幼獅的百分比,或不同候選人在選舉中獲得的投票百分比。 餅圖僅適用於比較單個參數或數據集。需要注意的是,餅圖無法繪製值為零的實體,因為餅圖中扇形的角度取決於數據點的數值大小。這意味著任何占比為零的實體

誰得到更多的Python或JavaScript? 誰得到更多的Python或JavaScript? Apr 04, 2025 am 12:09 AM

Python和JavaScript開發者的薪資沒有絕對的高低,具體取決於技能和行業需求。 1.Python在數據科學和機器學習領域可能薪資更高。 2.JavaScript在前端和全棧開發中需求大,薪資也可觀。 3.影響因素包括經驗、地理位置、公司規模和特定技能。

See all articles