成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Node.js中module.exports和exports的區(qū)別

codecook / 2042人閱讀

摘要:看了好多篇博客,對于和區(qū)別的解釋眾說紛紜有點迷糊,還是自己寫來感受一下吧。會造成被另外一個內(nèi)存地址替換,也就中斷得了和的聯(lián)系。調(diào)用了我調(diào)用了我調(diào)用了我兩者的值又相同。小弟才疏學淺,講解較為啰嗦,亦是初次寫之,若有疏漏,妄不吝賜教,特此感謝。

看了好多篇博客,對于module.exports和exports區(qū)別的解釋眾說紛紜有點迷糊,還是自己寫demo來感受一下吧。

module.exports和exports的默認值

console.log(module);     //Module {  id: ".", exports: {}, ...}
console.log(exports);    //{}

可以看到module.exports和exports的默認值都是空對象(對象是引用類型?。?/p>

foo.js

exports.foo = "exports調(diào)用了我";
console.log(module.exports); //{ foo: "exports調(diào)用了我" }
console.log(exports);        //{ foo: "exports調(diào)用了我" }

module.exports.foo = "module調(diào)用了我";
console.log(module.exports);  //{ foo: "module調(diào)用了我" }
console.log(exports);         //{ foo: "module調(diào)用了我" }

main.js

var foo= require("./foo");
console.log(foo);    //{ foo: "module調(diào)用了我" }

結論:require調(diào)用的是module.exports當中的值,而exports則是module.exports的引用,兩者調(diào)用的是同一個內(nèi)存地址。

foo.js

exports = "exports調(diào)用了我";
console.log(module.exports); //{}
console.log(exports);        //{ foo: "exports調(diào)用了我" }

main.js

var foo= require("./foo");
console.log(foo);    //{}

如果你對引用類型的理解不夠深刻,直接給exports賦值。會造成exports被另外一個內(nèi)存地址替換,也就中斷得了module.exports和exports的聯(lián)系。

但你又想讓他們賦值相同,你可以這么做。
foo.js

exports = "exports調(diào)用了我";
module.exports = exports;
console.log(module.exports); //{foo: "exports調(diào)用了我"}
console.log(exports);        //{ foo: "exports調(diào)用了我" }

兩者的值又相同。因為栗子里用的是字符串,是普通類型,意味著每次改變值都得用module.exports = exports;去重新同步值。所以還是不建議exports = "exports調(diào)用了我";這樣去賦值,保留初始值的對象形式或者自己賦值成引用類型對使用會比較方便。

小弟才疏學淺,講解較為啰嗦,亦是初次寫之,若有疏漏,妄不吝賜教,特此感謝。

文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/95597.html

相關文章

  • Node.js module.exports exports 區(qū)別

    摘要:中最常用的恐怕就是,以及了,那么和這兩者有什么區(qū)別,在什么情況下使用,又在什么時候使用。在拼接之后的代碼中,給這個函數(shù)傳入的是,也就是說和引用的是同一個對象。如果我們給增加屬性,那么因為也會增加相同的屬性,此時。 Node.js中最常用的恐怕就是 require, exports 以及 module.exports 了,那么 exports 和 module.exports 這兩者有什...

    laoLiueizo 評論0 收藏0
  • 談談Js前端模塊化規(guī)范

    摘要:依賴全部加載完成后,調(diào)用回調(diào)函數(shù)規(guī)范異步加載模塊規(guī)范和很相似,簡單,并與和的規(guī)范保持了很大的兼容性在規(guī)范中,一個模塊就是一個文件。 拋出問題: 在開發(fā)中在導入模塊時經(jīng)常使用require和import; 導出模塊時使用module.exports/exports或者export/export default; 有時候為了引用一個模塊會使用require奇怪的是也可以使用import?...

    Steve_Wang_ 評論0 收藏0
  • 談談Js前端模塊化規(guī)范

    摘要:依賴全部加載完成后,調(diào)用回調(diào)函數(shù)規(guī)范異步加載模塊規(guī)范和很相似,簡單,并與和的規(guī)范保持了很大的兼容性在規(guī)范中,一個模塊就是一個文件。 拋出問題: 在開發(fā)中在導入模塊時經(jīng)常使用require和import; 導出模塊時使用module.exports/exports或者export/export default; 有時候為了引用一個模塊會使用require奇怪的是也可以使用import?...

    NeverSayNever 評論0 收藏0
  • 兼容多種模塊規(guī)范(AMD,CMD,Node)代碼

    摘要:主要區(qū)別是需要在聲明模塊時指定所有的依賴,通過形參傳遞依賴到模塊內(nèi)容中。 前言 昨天,公司同事問了我如下一個問題: showImg(https://segmentfault.com/img/bVWXYP?w=548&h=346); 說他在看一個插件時,看到了源碼結構如截圖所示,他知道(function(){})()是一種立即執(zhí)行函數(shù),但是在截圖中,最后的那個圓括號里又寫了一個函數(shù)fun...

    Shonim 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<