module.exports與exports的區別
阿新 • • 發佈:2018-08-13
exp div 內存 span 由於 如果 返回 直接 var
1. 每一個node.js執行文件,都自動創建一個module對象,module對象有一個叫exports的屬性,module.exports 初始值為一個空對象 {},就像這樣:
var module = { exports: {} };
2. exports對象是module.exports對象的快捷方式,是指向的 module.exports 的引用,相當於 : exports = module.exports;
3. require() 返回的是 module.exports 而不是 exports
要導出該模塊的屬性或方法時,我們可以這樣:
module.exports.test = test;
當然,我們也可以給exports添加屬性:
exports.test = test;
由於exports和module.exports指向同一塊內存,就相當於該屬性添加到module.exports上;但是我們不能直接用對象字面量給exports賦值,這樣exports就指向了新的內存,切斷了exports與module.exports之間的聯系,這時exports和普通的對象就沒有區別了,無法被導出:
exports = { test: 1 }
如果要直接使用對象字面量,我們可以直接把它賦值給module.exports:
module.exports = { test:1 }
module.exports與exports的區別