module.exports和exports

require 用來加載代碼,而 exports 和 module.exports 則用來導出代碼。但不少新手可能會迷惑於 exports 和 module.exports 的區別,爲了更好的理解 exports 和 module.exports 的關係。node

一開始我沒有理解,緣由是我沒有明白nodejs 是怎麼建立module.exports 和 exports,而且兩者關係是怎麼樣的.ui

其實,系統自動給nodejs 文件增長2個變量 exports 和 module, module 又有一個屬性 exports, 這個exports 屬性指向一個空對象 {}; 同時 exports這個變量也指向了這個空對象{};spa

因而就有了 exports => {} <=module.exports.code

這2個exports 實際上是沒有直接關係的,惟一的關係是: 他們初始都指向同一個空對象{}; 若是其中一個不指向作個空對象了, 那麼他們的關係就沒有了.對象

咱們常常看到這樣的寫法:blog

exports = module.exports = somethings

 

上面的代碼等價於:class

module.exports = somethings
exports = module.exports

 

原理很簡單,即 module.exports 指向新的對象時,exports 斷開了與 module.exports 的引用,那麼經過 exports = module.exports 讓 exports 從新指向 module.exports 便可require

相關文章
相關標籤/搜索