2017年3月18日 星期六

nodejs 中關於 exports 及 module.exports

參考文章: http://stackoverflow.com/questions/16383795/difference-between-module-exports-and-exports-in-the-commonjs-module-system
當使用 require() 載入模組時, 它回傳回一個物件{}, 該物件由 module.exports 所參考. 而 exports 實際上也指向 module.exports, 實體是同一個.如果沒意外,兩者都可以用來傳回想要使用的函數或特性.這個例外就是將 exports 重新指向新的實體, 因為 require 實際上是 return module.exports 裡面的物件,而module.exports 剛開始預設是一個空的實體, 如果將 exports 重新指向新的實體(例如 exports={a:'a', b:'b'}),它會導致exports 與 module.exports 分別指向不同個體. 但如果是使用句點添加成員的方式,在exports上添加新成員(例如 exports.name='name'),實際上等同在原先的實體(module.exports)上去添加新成員(等同module.exports.name='name'),那兩者用法就無分別. 如果因此會混淆,那就不要管 exports. 直接用 module.exports 就不會錯了.


沒有留言: