淺談node中的exports與module.exports的關(guān)系
因為是做前端的,對node的生態(tài)一直也比較關(guān)注,對于node中對commonJS模塊化的實現(xiàn)給了我們很大的方便,之前對于導(dǎo)出的module.exports和exports一直模模糊糊,今天做一個整理
先來個js基礎(chǔ)部分的復(fù)習(xí)
let obj1 = {} let obj2 = obj1 obj2.a = 'a' obj1.b = 'b' console.log(obj1) //{a: 'a', b: 'b'} console.log(obj2) //{a: 'a', b: 'b'} obj2 = {} console.log(obj2) //{} console.log(obj1) //{a: 'a', b: 'b'}
obj1先指向內(nèi)存中的一個區(qū)塊,然后將obj1指向內(nèi)存區(qū)塊的引用傳遞給了obj2,那么這時obj1和obj2都指向了內(nèi)存中的同一個區(qū)塊,所以無論是通過obj1還是obj2向這塊內(nèi)存中加入屬性,都會同時反應(yīng)在obj1和obj2的身上,這時候obj2切斷了與原先內(nèi)存塊的聯(lián)系,指向了新的內(nèi)存塊,而obj1還是指向最先的內(nèi)存區(qū)塊,這時他們就各自管理各自的內(nèi)存區(qū)塊
現(xiàn)在看看module.exports和exports的關(guān)系
如圖最開始的時候module.exports和exports都指向同一塊內(nèi)存區(qū)域,紅線包含的區(qū)域,其中module.exports指向的區(qū)域用灰色填充
初始
現(xiàn)在我們導(dǎo)出為module.exports = {a: "a"},那么module.exports切斷與原來的紅色線包圍的內(nèi)存塊,指向新的內(nèi)存塊還是灰色填充的內(nèi)存塊,如圖
導(dǎo)出module.exports
或者是我們導(dǎo)出為exports = {a: "a"},那么exports切斷與原來的紅線包含的內(nèi)存塊,指向新的內(nèi)存塊,如圖
導(dǎo)出為exports
重要的是我們通過require導(dǎo)入的永遠都是module.exports,即圖中灰色填充的內(nèi)存塊,而不是紅色線條的最初始的內(nèi)存塊,所以無論我們在導(dǎo)出的時候是用module.exports還是exports只要保證導(dǎo)出的內(nèi)容是掛載在灰色內(nèi)存塊上都是可行的
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Node.js學(xué)習(xí)教程之Module模塊
- vue中node_modules中第三方模塊的修改使用詳解
- 深入理解Node module模塊
- nodejs中exports與module.exports的區(qū)別詳細介紹
- node.js中module.exports與exports用法上的區(qū)別
- NodeJS學(xué)習(xí)筆記之Module的簡介
- 深入理解node exports和module.exports區(qū)別
- node中modules.exports與exports導(dǎo)出的區(qū)別
- 詳解Node.js中exports和module.exports的區(qū)別
- Node.js 中exports 和 module.exports 的區(qū)別
- node.js中module模塊的功能理解與用法實例分析
相關(guān)文章
Nodejs 中的 Buffer 類的創(chuàng)建與基本使用
這篇文章主要為大家介紹了Nodejs中Buffer的使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10使用Make構(gòu)建Node.js網(wǎng)站項目
這篇文章介紹了使用Make構(gòu)建Node.js網(wǎng)站項目的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-01-01詳解nodejs微信公眾號開發(fā)——3.封裝消息響應(yīng)模塊
上一篇文章:nodejs微信公眾號開發(fā)(2)自動回復(fù),實現(xiàn)了簡單的關(guān)注回復(fù)。采用拼接字符串的形式,并不是很方便,這里我們將其封裝承接口。2017-04-04關(guān)于node-bindings無法在Electron中使用的解決辦法
今天小編就為大家分享一篇關(guān)于關(guān)于node-bindings無法在Electron中使用的解決辦法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12關(guān)于node+mysql數(shù)據(jù)庫連接池連接
這篇文章主要介紹了關(guān)于node+mysql數(shù)據(jù)庫連接池連接,mysql有兩種連接方式:一種是直接連接 另一種是池化連接,我們這篇講的是池化連接,需要的朋友可以參考下2023-04-04node.js中的fs.readlinkSync方法使用說明
這篇文章主要介紹了node.js中的fs.readlinkSync方法使用說明,本文介紹了fs.readlinkSync方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下2014-12-12