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

Node.js中exports 和 module.exports 的區別

- exports 和 module.exports 的區別
  + 每個模組中都有一個 module 物件
  + module 物件中有一個 exports 物件
  + 我們可以把需要匯出的成員都掛載到 module.exports 介面物件中
  + 也就是:`moudle.exports.xxx = xxx` 的方式
  + 但是每次都 `moudle.exports.xxx = xxx` 很麻煩,點兒的太多了
  + 所以 Node 為了你方便,同時在每一個模組中都提供了一個成員叫:`exports`
  + `exports === module.exports` 結果為  `true`s
  + 所以對於:`moudle.exports.xxx = xxx` 的方式 完全可以:`expots.xxx = xxx`
  + 當一個模組需要匯出單個成員的時候,這個時候必須使用:`module.exports = xxx` 的方式
  + 不要使用 `exports = xxx` 不管用
  + 因為每個模組最終向外 `return` 的是 `module.exports`
  + 而 `exports` 只是 `module.exports` 的一個引用
  + 所以即便你為 `exports = xx` 重新賦值,也不會影響 `module.exports`
  + 但是有一種賦值方式比較特殊:`exports = module.exports` 這個用來重新建立引用關係的
  + 之所以讓大家明白這個道理,是希望可以更靈活的去用它