1. 程式人生 > >module.exports與exports的區別

module.exports與exports的區別

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的區別