理解nodejs的module模組兒

2022-02-21 15:40:32 字數 1253 閱讀 3030

在 node.js 模組系統中,每個檔案都視為獨立的模組,node在執行某個模組兒時會生成乙個module物件

module  ],

paths:

[ '/users/leinov/github/node-api/module/node_modules',

'/users/leinov/github/node-api/node_modules',

'/users/leinov/github/node_modules',

'/users/leinov/node_modules',

'/users/node_modules',

'/node_modules' ] }

node裡面的模組系統遵循是commonjs規範,commonjs定義的模組分為: 模組標識(module)、模組定義(exports) 、模組引用(require),在模組兒執行的時候都會生成乙個module物件和乙個exports物件,module物件下也有乙個exports物件,預設情況下這兩個物件都是空物件。如果有引用其他模組兒或定義模組兒 即module.exports或者exports被賦值時,則該模組兒就是乙個有效的帶有返回值的模組兒。

乙個模組兒真正匯出的是module.exports的值,exports只是module.exports的乙個引用

可以簡單理解為下面這種物件引用和賦值的區別

let obj1 = ;

let obj2 = obj1;

console.log(obj1,obj2); //

obj2.a = 2

console.log(obj1,obj2); //

obj2 =

console.log(obj1,obj2); //

obj2只是obj1的乙個引用。當obj2.a改變時其實改變的是obj1obj2都指向的同乙個堆裡的資料。但obj2 =則重新在堆裡開闢了另乙個記憶體塊兒來儲存。已經跟obj1脫離沒有關係了

所以經常會看到node模組兒裡會像下面這樣來匯出模組兒。

exports = module.exports = ()=>
這是為了讓exports引用指向module.exports同一塊記憶體,確保資料的一致性。

總結github nodejs

理解nodejs的module模組兒

在 node.js 模組系統中,每個檔案都視為獨立的模組,node在執行某個模組兒時會生成乙個module物件 module paths users leinov github node api module node modules users leinov github node api nod...

nodejs 模組module學習

在nodejs中乙個檔案就是乙個模組。nodejs提供了exports和require兩個物件,其中exports是模組公開的介面,require用於從外部獲取乙個模組的介面,即所獲取模組的exports物件。演示示例 新建乙個module.js檔案,如下 var name exports.setn...

nodejs中流 stream 的理解

nodejs的fs模組並沒有提供乙個copy的方法,但我們可以很容易的實現乙個,比如 var source fs.readfilesync path to source fs.writefilesync path to dest source 如上面高大上的所示,我們把檔案比作裝水的桶,而水就是檔案...