首頁 > web前端 > H5教程 > 主體

exports和module.expors之間有什麼區別及聯繫?

不言
發布: 2019-01-08 10:50:10
轉載
2686 人瀏覽過

這篇文章帶給大家的內容是關於exports和module.expors之間有什麼差別及連結?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

我們在模組化開發中,必須會用到exports/module.exports這兩個玩意導出變數或函數。因為模組化開發中的每個模組都有自己的模組作用域。
例如:

//a.js
var foo = '苏小猫'
登入後複製
//b.js
console.log(foo)
登入後複製

我們在b.js中是沒辦法存取到a.js中的foo變量,所以b.js輸出的是「undefine」。如果我們想在b.js模組中存取a.js中的foo變量,我們必須在a.js中用exports或module.exports導出foo變數。
例如

//a.js
var foo = '苏小猫';

module.exports = foo;
登入後複製
//b.js
var foo = require('./b.js');

console.log(foo);
登入後複製

exportsmodule.expors的關係和差別?

在開發中,我們很糾結到底用exports還是module.exports,其實exports跟module.exports就是一個玩意,exports只是module.exports的引用。 exports跟module.exports是等價的。我們可以在node裡測試一下。

exports和module.expors之間有什麼區別及聯繫?

每個模組最終回傳的還是return module.exports;

在我們平常的理解​​中導出單一變數或單個函數就用module.exports;

module.exports = function(){
    console.log("在你心里种点Bnum")
}

//我们require之后就会得到一个[Function]
登入後複製

導出多個變數就用exports;

exports.name = "苏小猫"
exports.tree = function(){
    console.log("在你心里种点Bnum")
}
//我们require之后就会得到一个对象{name:"苏小猫",tree:[Function]}
登入後複製

exports和module.exports本身就是一個空對象,exports.xxx就等於在一個物件裡面添加東西。

為什麼module.exports導出的是單一?

因為它本來就是空對象,module.exports=xxx。現在你重新賦值它了,所以它只導出這個xxx。

exports和module.expors之間有什麼區別及聯繫?

如果給exports(exports={})重新賦值,這時它的意義就不同了;現在的exports,跟module.exports沒有了半毛錢的關係了,exports.xxx = xxx;再往裡面加東西已經不會再影響最後回傳回來的return module.exports了。

exports和module.expors之間有什麼區別及聯繫?

看,現在age已經不進入最後的return module.exports裡面了。

如果還想繼續用exports.xxx,那就得重新再給module.exports賦值給exports。

exports和module.expors之間有什麼區別及聯繫?

看,現在又生效了。

如果很糾結在開發中到底用很exports,還是module.exports,那就忘記exports吧(忘記它,我們不需要備胎,哈哈哈哈)。
一開始就是說了,exports本身就是module.exports的一個引用。 exports能做的module.exports都能做。例如導出多個變數或者函數。

exports和module.expors之間有什麼區別及聯繫?

以上是exports和module.expors之間有什麼區別及聯繫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:segmentfault.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板