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

exports和module.exports的區別

UNC mod exp 兩個 指向 異同 module node 技術分享

首先得明確兩個的含義 exports:首先對於本身來講是一個變量(對象),它不是module的引用,它是{}的引用,它指向module.exports的{}模塊 module.exports:首先,module是一個變量,指向一塊內存,exports是module中的一個屬性,存儲在內存中,然後exports屬性指向{}模塊 內存示意圖如下: 技術分享圖片 現在來看看它們在運用中的異同:
exports.bar=function(){};
module.exports.bar=function(){}
上面的兩行代碼,分別來暴露相同的模塊,兩個方式是等價的,因為他們改變的內存是暴露模塊的{},使暴露模塊變成了 技術分享圖片
exports和module.exports的等價是由於他們在操作同一塊內存,所以意義是一樣的
exports=function(){};
module.exports=function(){}
現在我們把bar屬性給去掉,這時候效果就完全不一樣了 技術分享圖片 這時候exports和module.exports操作的就不是同一塊內存了,exports指向了新的內存,實際上module.exports也指向了新的內存,但是nodejs中尋找的是module變量下的exports屬性所指向的內存塊,如果exports和module.exports操作的不是同一個內存塊的話,exports就不起作用了,所以不管怎麽樣,使用module.exports是萬無一失的。。。

exports和module.exports的區別