欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js中module.exports?和exports使用誤區(qū)

 更新時(shí)間:2022年01月29日 11:46:10   作者:小吳睡醒了  
本文主要介紹了Node.js中module.exports?和exports使用誤區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、module,module.exports ,exports含義

  • module對(duì)象:在每個(gè) .js 自定義模塊中都有一個(gè) module 對(duì)象,它里面存儲(chǔ)了和當(dāng)前模塊有關(guān)的信息
  • module.exports 對(duì)象:在node里自定義的模塊中,可以使用 module.exports 對(duì)象,將自定義的模塊內(nèi)部分的成員共享出去被使用。
  • 當(dāng)外界(其他js文件)用require() 方法導(dǎo)入自定義模塊時(shí),得到的就是 module.exports 所指向的對(duì)象
  • exports對(duì)象:由于 module.exports 單詞寫(xiě)起來(lái)比較復(fù)雜,為了簡(jiǎn)化向外共享成員的代碼,Node 提供了 exports 對(duì)象。默認(rèn)情況下,exports 和 module.exports 指向同一個(gè)對(duì)象

注意:使用 require() 方法導(dǎo)入模塊時(shí),導(dǎo)入的結(jié)果,永遠(yuǎn)以 module.exports 指向的對(duì)象為準(zhǔn)
換句話(huà)說(shuō)最終共享的結(jié)果,還是以 module.exports 指向的對(duì)象為準(zhǔn)

二.案例

通過(guò)案例來(lái)理解二者的關(guān)系

案例一:

定義代碼

//文件名:01.module.exports和exports誤區(qū)
exports.name="小吳"
module.exports ={
    性別:"男",
    age:18
    
}

輸出代碼

//文件名:01-test 
//為了測(cè)試module.exports ,exports指向結(jié)果 案例二三四的輸出代碼都是此js代碼文件
const obj=require("./01.module.exports和exports誤區(qū)")
console.log(obj);

輸出結(jié)果

例子1輸出結(jié)果

案例一解釋?zhuān)阂驗(yàn)槟J(rèn)情況下,exports 和 module.exports 指向同一個(gè)對(duì)象,所以開(kāi)始二者都是指向一個(gè)空對(duì)象,當(dāng)export指向新對(duì)象name="小吳"后,此時(shí)二者都指向這個(gè)對(duì)象,但是執(zhí)行后面代碼則是在內(nèi)存中新開(kāi)辟一個(gè)空間存儲(chǔ)新對(duì)象 {性別:“男”,age:18} ,且把這個(gè)新對(duì)象的引用交給了module.exports,則module.exports就指向新的對(duì)象,不指向之前的空對(duì)象了,而且由于最終共享的結(jié)果,以module.exports 指向的對(duì)象為準(zhǔn),所以案例輸出如上圖所示

案例二

定義代碼

module.exports.name="小吳"
exports ={
    性別:"男",
    age:18
    
}

輸出結(jié)果

案例2輸出結(jié)果

案例二解釋?zhuān)和懋?dāng)module.exports指向?qū)ο髇ame="小吳"后,執(zhí)行后面代碼,,exports指向新對(duì)象{性別:“男”,age:18},由于最終共享的結(jié)果,還是以 module.exports 指向的對(duì)象為準(zhǔn)
所以案例輸出如上圖所示

案例三

定義代碼

exports.name="小吳"
module.exports.age=18

輸出結(jié)果

在這里插入圖片描述

案例三解釋?zhuān)和矶唛_(kāi)始指向空對(duì)象,第一行代碼通過(guò)exports引用關(guān)系掛載了一個(gè)name屬性,第二行又通過(guò)module.exports引用關(guān)系掛載了一個(gè)屬性age 這里不存在新對(duì)象 都是掛載屬性 這些屬性都被放在了開(kāi)始二者指向的空對(duì)象中,則最終兩個(gè)屬性都在此對(duì)象中,且module.exports指向這個(gè)對(duì)象,所以最終結(jié)果輸出如上圖所示

案例四

定義代碼

exports={
    性別:"男",
    name:"小吳",
    
}
module.exports=exports//把export的引用關(guān)系通過(guò)等號(hào)賦值給了module.exports
module.exports.age=18

輸出結(jié)果

在這里插入圖片描述

案例四解釋?zhuān)和矶唛_(kāi)始指向同一空對(duì)象,執(zhí)行代碼,在內(nèi)存中定義了一個(gè)新對(duì)象,且把新對(duì)象掛載在exports上,此時(shí)exports就不指向之前的空對(duì)象而指向新定義的對(duì)象,module.exports=exports這行代碼把export的引用關(guān)系通過(guò)等號(hào)賦值給了module.exports,則module.exports也不指向之前的空對(duì)象了,也指向新對(duì)象了,最后給module.exports指向的新對(duì)象又繼續(xù)掛載了一個(gè)age屬性,所以里面的所有屬性都被module.exports指向到的,所以最終結(jié)果輸出如圖所示

重要注意:為了防止二者指向混亂,建議不要在同一個(gè)模塊中同時(shí)使用 exports 和 module.exports

 到此這篇關(guān)于Node.js中module.exports 和exports使用誤區(qū)的文章就介紹到這了,更多相關(guān)Node.js module.exports和exports內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解NODEJS基于FFMPEG視頻推流測(cè)試

    詳解NODEJS基于FFMPEG視頻推流測(cè)試

    本篇文章主要介紹了詳解NODEJS基于FFMPEG視頻推流測(cè)試,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • node.js中的fs.existsSync方法使用說(shuō)明

    node.js中的fs.existsSync方法使用說(shuō)明

    這篇文章主要介紹了node.js中的fs.existsSync方法使用說(shuō)明,本文介紹了fs.existsSync方法說(shuō)明、語(yǔ)法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng)

    NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng)

    這篇文章主要介紹了NodeJs的fs讀寫(xiě)刪除移動(dòng)監(jiān)聽(tīng),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-04-04
  • Linux環(huán)境部署node服務(wù)并啟動(dòng)詳細(xì)步驟

    Linux環(huán)境部署node服務(wù)并啟動(dòng)詳細(xì)步驟

    最近用node.js開(kāi)發(fā)了一個(gè)web項(xiàng)目,下面這篇文章主要給大家介紹了關(guān)于Linux環(huán)境部署node服務(wù)并啟動(dòng)的詳細(xì)步驟,文中通過(guò)圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • 輕松創(chuàng)建nodejs服務(wù)器(3):代碼模塊化

    輕松創(chuàng)建nodejs服務(wù)器(3):代碼模塊化

    這篇文章主要介紹了輕松創(chuàng)建nodejs服務(wù)器(3):代碼模塊化,本文是對(duì)第一節(jié)的例子作了封裝,需要的朋友可以參考下
    2014-12-12
  • node.js在Linux下執(zhí)行shell命令、.sh腳本的問(wèn)題

    node.js在Linux下執(zhí)行shell命令、.sh腳本的問(wèn)題

    很多時(shí)候需要多個(gè)命令來(lái)完成一項(xiàng)工作,而這個(gè)工作又常常是重復(fù)的,這個(gè)時(shí)候我們自然會(huì)想到將這些命令寫(xiě)成sh腳本,下次執(zhí)行下這個(gè)腳本一切就都搞定了,下面就是發(fā)布代碼的一個(gè)腳本示例
    2022-01-01
  • VSCode中配置node.js的實(shí)現(xiàn)示例

    VSCode中配置node.js的實(shí)現(xiàn)示例

    本文主要介紹了VSCode中配置node.js的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • 使用npm發(fā)布Node.JS程序包教程

    使用npm發(fā)布Node.JS程序包教程

    這篇文章主要介紹了使用npm發(fā)布Node.JS程序包教程,本文講解了配置package.json、注冊(cè)npm帳號(hào)、發(fā)布程序包等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • adm-zip-0.4.13-中文文檔詳解

    adm-zip-0.4.13-中文文檔詳解

    這篇文章主要介紹了adm-zip-0.4.13-中文文檔,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • Node.js之http模塊的用法

    Node.js之http模塊的用法

    這篇文章主要介紹了Node.js之http模塊的用法,對(duì)Node.js感興趣的同學(xué),可以參考下
    2021-04-04

最新評(píng)論