亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node.js模塊化的使用詳細(xì)介紹

 更新時(shí)間:2022年08月24日 17:06:07   作者:薇z  
nodejs中的模塊化是指將每個(gè)js文件會(huì)被認(rèn)為單獨(dú)一個(gè)的模塊。模塊之間是互相不可見的。如果一個(gè)模塊需要使用另一個(gè)模塊,那么需要通過(guò)指定語(yǔ)法來(lái)引入要使用的模塊,而且只能使用引入模塊所暴露的內(nèi)容

什么是模塊化

模塊化是指解決一個(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ī)范寫代碼,降低了溝通的成本,極大方便了各個(gè)模塊之間的相互調(diào)用,利人利己。

Node.js中的模塊化

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

  • 內(nèi)置模塊(內(nèi)置模塊是由 Node.js 官方提供的,例如 fs、path、http 等)
  • 自定義模塊(用戶創(chuàng)建的每個(gè) .js 文件,都是自定義模塊)
  • 第三方模塊(由第三方開發(fā)出來(lái)的模塊,并非官方提供的內(nèi)置模塊,也不是用戶創(chuàng)建的自定義模塊,使用前需要先下載)

加載模塊

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

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

Node.js中的模塊作用域

1. 什么是模塊作用域

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

2. 模塊作用域的好處

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

username打印的是:ls

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

1. module對(duì)象

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

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)

共享成員時(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)

exports對(duì)象

由于 module.exports 單詞寫起來(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)

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

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

注意:為了防止混亂,建議大家不要在同一個(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() 方法用于加載模塊。

到此這篇關(guān)于Nodejs模塊化的使用詳細(xì)介紹的文章就介紹到這了,更多相關(guān)Nodejs模塊化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 開發(fā)Node CLI構(gòu)建微信小程序腳手架的示例

    開發(fā)Node CLI構(gòu)建微信小程序腳手架的示例

    這篇文章主要介紹了開發(fā)Node CLI構(gòu)建微信小程序腳手架,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • Node.js中的cluster模塊深入解讀

    Node.js中的cluster模塊深入解讀

    NodeJS引入了Cluster模塊試圖簡(jiǎn)化這些體力勞動(dòng),使用Cluster模塊可以運(yùn)行并管理多個(gè)實(shí)例進(jìn)程,下面這篇文章主要給大家介紹了關(guān)于Node.js中cluster模塊的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧
    2018-06-06
  • Node.js中的async?和?await?關(guān)鍵字微任務(wù)和宏任務(wù)

    Node.js中的async?和?await?關(guān)鍵字微任務(wù)和宏任務(wù)

    這篇文章主要介紹了Node.js中的async和await關(guān)鍵字微任務(wù)和宏任務(wù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • 14款NodeJS Web框架推薦

    14款NodeJS Web框架推薦

    這篇文章主要介紹了14款NodeJS Web框架推薦,其中大多數(shù)框架都是基于node.js的Express實(shí)現(xiàn),需要的朋友可以參考下
    2014-07-07
  • 使用nodeAPI時(shí)遇到過(guò)異步問(wèn)題解決

    使用nodeAPI時(shí)遇到過(guò)異步問(wèn)題解決

    這篇文章主要為大家介紹了使用nodeAPI時(shí)遇到過(guò)異步問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 淺析node中間件及實(shí)現(xiàn)一個(gè)簡(jiǎn)單的node中間件

    淺析node中間件及實(shí)現(xiàn)一個(gè)簡(jiǎn)單的node中間件

    這篇文章主要介紹了淺析node中間件及實(shí)現(xiàn)一個(gè)簡(jiǎn)單的node中間件,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Node.js高級(jí)編程之UDP可靠性分析

    Node.js高級(jí)編程之UDP可靠性分析

    這篇文章主要為大家介紹了Node.js高級(jí)編程之UDP可靠性分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • NodeJs使用Mysql模塊實(shí)現(xiàn)事務(wù)處理實(shí)例

    NodeJs使用Mysql模塊實(shí)現(xiàn)事務(wù)處理實(shí)例

    本篇文章主要介紹了NodeJs使用Mysql模塊實(shí)現(xiàn)事務(wù)處理 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • NodeJS 文件夾拷貝以及刪除功能

    NodeJS 文件夾拷貝以及刪除功能

    這篇文章主要介紹了NodeJS 文件夾拷貝以及刪除功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Node.js 學(xué)習(xí)筆記之簡(jiǎn)介、安裝及配置

    Node.js 學(xué)習(xí)筆記之簡(jiǎn)介、安裝及配置

    本文是Node.js學(xué)習(xí)筆記系列文章的第一篇,主要給大家講解的是在Windows和Linux上安裝Node.js的方法。軟件安裝版本以0.12.0為例。希望大家能夠喜歡。
    2015-03-03

最新評(píng)論