溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Node.js模塊化如何使用

發(fā)布時(shí)間:2022-08-25 10:44:39 來(lái)源:億速云 閱讀:111 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容介紹了“Node.js模塊化如何使用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

    什么是模塊化

    模塊化是指解決一個(gè)復(fù)雜問(wèn)題時(shí),自頂向下逐層把系統(tǒng)劃分成若干模塊的過(guò)程。對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō),模塊是可組合、分解和更換的單元。

    編程領(lǐng)域中的模塊化

    編程領(lǐng)域中的模塊化,就是遵守固定的規(guī)則,把一個(gè)大文件拆成獨(dú)立并互相依賴的多個(gè)小模塊。

    把代碼進(jìn)行模塊化拆分的好處:

    ① 提高了代碼的復(fù)用性

    ② 提高了代碼的可維護(hù)性

    ③ 可以實(shí)現(xiàn)按需加載

    模塊化規(guī)范

    模塊化規(guī)范就是對(duì)代碼進(jìn)行模塊化的拆分與組合時(shí),需要遵守的那些規(guī)則。

    例如:

    • 使用什么樣的語(yǔ)法格式來(lái)引用模塊

    • 在模塊中使用什么樣的語(yǔ)法格式向外暴露成員

    模塊化規(guī)范的好處:大家都遵守同樣的模塊化規(guī)范寫(xiě)代碼,降低了溝通的成本,極大方便了各個(gè)模塊之間的相互調(diào)用,利人利己。

    Node.js中的模塊化

    Node.js 中根據(jù)模塊來(lái)源的不同,將模塊分為了 3 大類,分別是:

    • 內(nèi)置模塊(內(nèi)置模塊是由 Node.js 官方提供的,例如 fs、path、http 等)

    • 自定義模塊(用戶創(chuàng)建的每個(gè) .js 文件,都是自定義模塊)

    • 第三方模塊(由第三方開(kāi)發(fā)出來(lái)的模塊,并非官方提供的內(nèi)置模塊,也不是用戶創(chuàng)建的自定義模塊,使用前需要先下載)

    加載模塊

    使用強(qiáng)大的 require() 方法,可以加載需要的內(nèi)置模塊、用戶自定義模塊、第三方模塊進(jìn)行使用。例如:

    Node.js模塊化如何使用

    注意:使用 require() 方法加載其它模塊時(shí),會(huì)執(zhí)行被加載模塊中的代碼。

    Node.js中的模塊作用域

    1. 什么是模塊作用域

    和函數(shù)作用域類似,在自定義模塊中定義的變量、方法等成員,只能在當(dāng)前模塊內(nèi)被訪問(wèn),這種模塊級(jí)別的訪問(wèn)限制,叫做模塊作用域

    Node.js模塊化如何使用

    2. 模塊作用域的好處

    防止了全局變量污染的問(wèn)題

    Node.js模塊化如何使用

    username打印的是:ls

    Node.js模塊化如何使用

    向外共享模塊作用域中的成員

    1. module對(duì)象

    在每個(gè) .js 自定義模塊中都有一個(gè) module 對(duì)象,它里面存儲(chǔ)了和當(dāng)前模塊有關(guān)的信息,打印如下:

    Node.js模塊化如何使用

    2. module.exports對(duì)象

    在自定義模塊中,可以使用 module.exports 對(duì)象,將模塊內(nèi)的成員共享出去,供外界使用。

    外界用 require() 方法導(dǎo)入自定義模塊時(shí),得到的就是 module.exports 所指向的對(duì)象。

    // 在一個(gè)自定義模塊中,默認(rèn)情況下, module.exports = {}
    const age = 20
    // 向 module.exports 對(duì)象上掛載 username 屬性
    module.exports.username = 'zs'
    // 向 module.exports 對(duì)象上掛載 sayHello 方法
    module.exports.sayHello = function() {
      console.log('Hello!')
    }
    module.exports.age = age
    // 在外界使用 require 導(dǎo)入一個(gè)自定義模塊的時(shí)候,得到的成員,
    // 就是 那個(gè)模塊中,通過(guò) module.exports 指向的那個(gè)對(duì)象
    const m = require('./11.自定義模塊')
    console.log(m)

    Node.js模塊化如何使用

    Node.js模塊化如何使用

    共享成員時(shí)的注意點(diǎn)

    使用 require() 方法導(dǎo)入模塊時(shí),導(dǎo)入的結(jié)果,永遠(yuǎn)以 module.exports 指向的對(duì)象為準(zhǔn)。

    // 在一個(gè)自定義模塊中,默認(rèn)情況下, module.exports = {}
    const age = 20
    // 向 module.exports 對(duì)象上掛載 username 屬性
    module.exports.username = 'zs'
    // 向 module.exports 對(duì)象上掛載 sayHello 方法
    module.exports.sayHello = function() {
      console.log('Hello!')
    }
    module.exports.age = age
    // 讓 module.exports 指向一個(gè)全新的對(duì)象
    module.exports = {
      nickname: '小黑',
      sayHi() {
        console.log('Hi!')
      }
    }
    // 在外界使用 require 導(dǎo)入一個(gè)自定義模塊的時(shí)候,得到的成員,
    // 就是 那個(gè)模塊中,通過(guò) module.exports 指向的那個(gè)對(duì)象
    const m = require('./11.自定義模塊')
    console.log(m)

    Node.js模塊化如何使用

    Node.js模塊化如何使用

    exports對(duì)象

    由于 module.exports 單詞寫(xiě)起來(lái)比較復(fù)雜,為了簡(jiǎn)化向外共享成員的代碼,Node 提供了 exports 對(duì)象。默認(rèn)情況下,exports 和 module.exports 指向同一個(gè)對(duì)象。最終共享的結(jié)果,還是以 module.exports 指向的對(duì)象為準(zhǔn)。

    // console.log(exports)//{}
    // console.log(module.exports)//{}
    // console.log(exports === module.exports)//true
    const username = 'zs'
    module.exports.username = username
    exports.age = 20
    exports.sayHello = function() {
      console.log('大家好!')
    }
    // 最終,向外共享的結(jié)果,永遠(yuǎn)都是 module.exports 所指向的對(duì)象
    const m = require('./13.exports對(duì)象')
    console.log(m)

    Node.js模塊化如何使用

    Node.js模塊化如何使用

    exports和module.exports的使用誤區(qū)

    時(shí)刻謹(jǐn)記,require() 模塊時(shí),得到的永遠(yuǎn)是 module.exports 指向的對(duì)象:

    Node.js模塊化如何使用

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

    Node.js中的模塊化規(guī)范

    Node.js 遵循了 CommonJS 模塊化規(guī)范,CommonJS 規(guī)定了模塊的特性和各模塊之間如何相互依賴。

    CommonJS 規(guī)定:

    ① 每個(gè)模塊內(nèi)部,module 變量代表當(dāng)前模塊。

    ② module 變量是一個(gè)對(duì)象,它的 exports 屬性(即 module.exports)是對(duì)外的接口。

    ③ 加載某個(gè)模塊,其實(shí)是加載該模塊的 module.exports 屬性。require() 方法用于加載模塊。

    “Node.js模塊化如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

    向AI問(wèn)一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI