Node.js exports與module.exports的關係

今天搜索module.exports時看到CNode社區上發的Hack Sparrow一篇相關文章的鏈接
Node.js Module – exports vs module.exports
一篇5年前的遠古巨墳…

網上也有相應的翻譯,nodejs中exports與module.exports的區別詳細介紹

又看了下CNode上的一篇介紹,exports 和 module.exports 的區別

下面做個總結,感謝CNode社區上@manecocomph的解釋,十分直白(在上面那篇文章的評論裏)

其實exports跟module.exports初始時指向的是同一個空對象{},因此在exports上添加的屬性也會被添加到module.exports上
而在另一個文件中,require的返回值是module.exports,因此當exports跟module.exports不指向同一個對象時,exports中的屬性便不會被導出

console.log(exports);  //{}
console.log(module.exports);  //{}
console.log(exports === module.exports);  //true

rocker.js

exports.name = 'naive';  //{ name: 'naive' }
module.exports = {};  //{},與exports不再指向同一個對象

app.js

var rocker = require('./rocker.js');
console.log(rocker.name);  //undefined

參考:

Node.js Module – exports vs module.exports
exports 和 module.exports 的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章