淺析module.exports和exports區別和使用


module.exports和exports

寫node的時候,特別是自定義模塊的時候,都是一頓亂敲,然后module.exports={}完事。
但有時候去看別人寫的代碼的時候會發現還可以exports,比如導出一個函數exports.fn = function(){}這樣總少寫了module,感覺更簡潔。
為了讓自己寫代碼更快樂一點,我決定搞清楚它們的區別。
查看官方文檔,谷歌一波。
最后發現,exports只是module.exports的全局引用,原文是這樣說的:

"exports is assigned the value of module.exports before the module is evaluated."

意思是:在模塊被導出之前exports被賦值為module.exports。
用中文的話來說就是一個全局引用,在模塊內部你都可以使用exports導出一些東西。

值得注意的是,你不能給exports賦值,這很重要,很重要,很重要。

比如,你想導出一個類。

class girl {
  constructor(age) {
    this.age = age
  }
  love(u) {
    return "你是個好人!"
  }
}
// 把她導出去
exports = girl  // 出錯! 不能重寫exports!
// 正確做法
module.exports = girl

總結:

  1. exports只是module.exports的引用
  2. 如果你想要使用exports導出模塊,千萬不能給它賦值!
  3. 穩一點的做法是使用module.exports,雖然exports用起來是挺爽的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM