**概念:**解決一個復雜問題時,遵守固定規則,自頂向下把問題逐層分解為一個個獨立并相互依賴的小模塊,
**優點:**提高代碼的復用性,可維護性,以及實作了代碼的按需加載,
**模塊化規范:**很多開發語言都具有模塊化的規范,而前端語言中最主要的則是ES6規范和CommonJs規范,前者主要作用于vue等框架,而CommonJS規范則是針對于node.js的規范化規則,
CommonJS:規定了nodejs中模塊規范,包括模塊的特性,以及各模塊之間如何相互依賴
**模塊作用域:**變數只能在當前模塊內訪問,可以防止變數污染(html中出現多個同名變數,導致錯亂)
模塊化規范的重點有兩個:匯入和匯出,
**匯入:**匯入的意思是將某個模塊匯入到當前js檔案里,方法:例:const moment = require(‘moment’) 重點在于require(‘匯入的檔案’),此處moment.js中的.js省略了,因為模塊必定是.js檔案,所以可以省略
**匯出:**匯出的意思是讓當前模塊內的指定內容可以被其他模塊使用,方法有兩種:(1)通過module里面的exports屬性將需要提供給外界使用的成員傳出,具體用法:module.exports.函式名或變數名;(2)exports.函式名或變數名
**匯出方式詳解:**這兩種中方式將資料以屬性名和屬性值的方式存在一個物件里,并且這兩種方式寫入內容的物件空間是同一個(系統預留的一個空間,也這兩種方式的默認指向空間),只是后一種寫法縮略了一點,但是,當同時使用了這兩種寫法時,以module.exports所指向的空間為準,此處分為幾種情況:(1)exports和module.exports都沒有創建新的{}空間,而是直接以exports.屬性名 = 屬性值的方式添加內容,此時通過這兩種方式匯入的內容都存在于{}空間中,都能被讀取
(2)exports通過exports={a:1}創建了空間,但是module.exports.b=2沒有創建空間,此時輸出為b:2,原因是:被解釋器承認的是module.exports所指向的空間(即module.exports具有開辟空間的能力,但是exports沒有,不被承認)
(3)exports.a=1 module.exports={b:2} 即exports是添加的屬性到系統設定的預留空間,而module.exports是創建了一個新的空間,結果是{b:2},原因是系統識別的依據是module.exports所指向的空間,而并不一定是系統預留的那個空間
(4)exports = {a:1} module.exports = exports module.exports.b = 2 此種方式輸出結果為{a:1,b:2} ,原因是雖然exports創建的空間不被承認,但是經過module.exports的指向之后,它就被承認了(本質上還是承認的module.exports所指向的空間)
**總結:**在實際使用時,一般不會通過exports或module.exports去自行創建空間,這樣會引出這兩者的資料生效問題,以及空余了一個系統預留的空間導致的空間浪費;一般的使用方式都是通過點語法直接往預留空間里面添加屬性名和屬性值,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/305998.html
標籤:其他
上一篇:前端nodejs模塊化
下一篇:node.js中的模塊化
