nodejs——commonJS

Node 應(yīng)用由模塊組成,采用 CommonJS 模塊規(guī)范。

每個(gè)模塊有自己的變量和方法,需要一種方式去暴露和引用一個(gè)模塊的變量和方法。require方法用于加載模塊,module.exports和exports用于暴露方法。

module.exports和exports的區(qū)別:(1)module.exports 初始值為一個(gè)空對象 {};(2)exports 是指向的 module.exports 的引用;(3)require() 返回的是 module.exports 而不是 exports

寫法:exports = module.exports = somethings,即 module.exports 指向新的對象時(shí),exports 斷開了與 module.exports 的引用,那么通過 exports = module.exports 讓 exports 重新指向 module.exports 即可。

CommonJS模塊的特點(diǎn):(1)所有代碼都運(yùn)行在模塊作用域,不會(huì)污染全局作用域。(2)模塊可以多次加載,但是只會(huì)在第一次加載時(shí)運(yùn)行一次,然后運(yùn)行結(jié)果就被緩存了,以后再加載,就直接讀取緩存結(jié)果。要想讓模塊再次運(yùn)行,必須清除緩存。(3)模塊加載的順序,按照其在代碼中出現(xiàn)的順序。

AMD規(guī)范與CommonJS的區(qū)別:CommonJS規(guī)范加載模塊是同步的,AMD規(guī)范則是非同步加載模塊,允許指定回調(diào)函數(shù)。由于Node.js主要用于服務(wù)器編程,模塊文件一般都已經(jīng)存在于本地硬盤,所以加載起來比較快,不用考慮非同步加載的方式,所以CommonJS規(guī)范比較適用。但是,如果是瀏覽器環(huán)境,要從服務(wù)器端加載模塊,這時(shí)就必須采用非同步模式,因此瀏覽器端一般采用AMD規(guī)范。

CommonJS模塊的加載機(jī)制是,輸入的是被輸出的值的拷貝。也就是說,一旦輸出一個(gè)值,模塊內(nèi)部的變化就影響不到這個(gè)值。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 模塊通常是指編程語言所提供的代碼組織機(jī)制,利用此機(jī)制可將程序拆解為獨(dú)立且通用的代碼單元。所謂模塊化主要是解決代碼分...
    MapleLeafFall閱讀 1,254評論 0 0
  • 前言 js是從網(wǎng)頁小腳本演變過來的,至今,前端的js庫,也不像一個(gè)真正的模塊。前端js經(jīng)歷了工具類庫、組件庫、前端...
    白昔月閱讀 3,445評論 2 11
  • 前言 java有類文件,Python有import機(jī)制,Ruby有require等,而Javascript 通過 ...
    RayLeo閱讀 857評論 0 4
  • 1.幾種基本數(shù)據(jù)類型?復(fù)雜數(shù)據(jù)類型?值類型和引用數(shù)據(jù)類型?堆棧數(shù)據(jù)結(jié)構(gòu)? 基本數(shù)據(jù)類型:Undefined、Nul...
    極樂君閱讀 5,878評論 0 106
  • 學(xué)習(xí)一門技術(shù),基礎(chǔ)是關(guān)鍵,比如想學(xué)react或redux,那就得有node和webpack的基礎(chǔ);學(xué)習(xí)webpac...
    狂瀾1991閱讀 3,463評論 0 7

友情鏈接更多精彩內(nèi)容