目錄
一、什么是模塊化
二、node.js中的模塊化
1. node.js中模塊的分類
2. 加載模塊
3.?node.js 中的模塊作用域
4.?向外共享模塊作用域中的成員
4.1 module對象?
4.2?module.exports 對象
4.3 exports對象
5.?node.js 中的模塊化規(guī)范?
一、什么是模塊化
????????模塊化是指解決一個復雜問題時,自頂向下逐層把系統(tǒng)劃分成若干模塊的過程。對于整個系統(tǒng)來說,模塊是可組合、分解和更換的單元。
????????編程領域中的模塊化,就是遵守固定的規(guī)則,把一個大文件拆成獨立并互相依賴的多個小模塊。把代碼進行模塊化拆分的好處:
????????(1)提高了代碼的復用性
????????(2)提高了代碼的可維護性
????????(3)可以實現(xiàn)按需加載
????????模塊化規(guī)范就是對代碼進行模塊化的拆分與組合時,需要遵守的那些規(guī)則。例如,使用什么樣的語法格式來引用模塊,在模塊中使用什么樣的語法格式向外暴露成員。模塊化規(guī)范的好處:
大家都遵守同樣的模塊化規(guī)范寫代碼,降低了溝通的成本,極大方便了各個模塊之間的相互調用。
二、node.js中的模塊化
1. node.js中模塊的分類
node.js 中根據模塊來源的不同,將模塊分為了3大類,分別是:
(1)內置模塊 (內置模塊是由 Node.js 官方提供的,例如 fs、path、http 等)
(2)自定義模塊(用戶創(chuàng)建的每個.js 文件,都是自定義模塊)
(3)第三方模塊(由第三方開發(fā)出來的模塊,并非官方提供的內置模塊,也不是用戶創(chuàng)建的自定義模塊,使用前需要先下載)
?
2. 加載模塊
????????使用強大的 require() 方法,可以加載需要的內置模塊、用戶自定義模塊、第三方模塊進行使用。例如:
注意:使用require方法加載模塊時,會執(zhí)行被加載模塊中的代碼。在加載用戶自定義模塊時,可以沈省略.js后綴名。
3.?node.js 中的模塊作用域
????????和函數作用域類似,在自定義模塊中定義的變量、方法等成員,只能在當前模塊內被訪問,這種模塊級別的訪問限制,叫做模塊作用域。模塊作用域可以防止全局變量污染。
4.?向外共享模塊作用域中的成員
4.1 module對象?
????????在每個.js 自定義模塊中都有一個 module 對象,它里面存儲了和當前模塊有關的信息,打印如下:
console.log(module)
4.2?module.exports 對象
????????在自定義模塊中,可以使用 module.exports 對象,將模塊內的成員共享出去,供外界使用。外界用 require() 方法導入自定義模塊時,得到的就是 module.exports 所指向的對象
例子:
? ? ? ? 我們現(xiàn)在有編寫了兩個js文件,一個名為“06-模塊化.js”,另一個為“自定義模塊.js”,現(xiàn)在我們希望在“06-模塊化.js”中引入“自定義模塊.js”:
?“06-模塊化.js”的打印信息如下:
?
4.3 exports對象
????????由于 module.exports 單詞寫起來比較復雜,為了簡化向外共享成員的代碼,Node 提供了exports 對象。默認情況exports 和 module.exports 指向同一個對象。最終共享的結果,還是以module.exports 指向的對象為準。
5.?node.js 中的模塊化規(guī)范?
????????node.js 遵循了 CommonJS 模塊化規(guī)范,CommonJS 規(guī)定了模塊的特性和各模塊之間如何相互依賴。
CommonJS規(guī)定:
(1)每個模塊內部,module 變量代表當前模塊
(2)module 變量是一個對象,它的 exports 屬性 (即 module.exports) 是對外的接口文章來源:http://www.zghlxwxcb.cn/news/detail-614509.html
(3)加載某個模塊,其實是加載該模塊的 module.exports 屬性。require()?方法用于加載模塊文章來源地址http://www.zghlxwxcb.cn/news/detail-614509.html
到了這里,關于【node.js】04-模塊化的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!