JavaScript中的模塊化規(guī)范

先放上一個xmind的總結

commonJS [常用]

NodeJS 是 CommonJS 規(guī)范的實現(xiàn),CommonJS 是一種只適用于 JavaScript 的靜態(tài)模塊化規(guī)范。只適用于 Node.js 開發(fā),但是不適合瀏覽器環(huán)境。

特點:

? ? 1>同步加載;

? ? 2>主要用于服務器端,不適合前端;

? ? 3>在服務器端,模塊的加載是運行時同步加載的;

? ? 4>在瀏覽器端,無法直接運行在瀏覽器端上,需要通過工具轉換成標準的 ES5 ;

? ? 5>所有代碼都運行在模塊作用域,不會污染全局作用域;

? ? 6>模塊可以多次加載,但是只會在第一次加載時運行一次,然后運行結果就被緩存了,以后再加載,就直接讀取緩存結果。要想讓模塊再次運行,必須清除緩存;

? ? 7>模塊加載的順序,按照其在代碼中出現(xiàn)的順序。

實現(xiàn):

NodeJS

使用:

引入模塊:

如果是第三方模塊,xxx?為模塊名;如果是自定義模塊,?xxx?為模塊文件路徑。

暴露模塊

AMD

AMD,異步模塊定義。瀏覽器的模塊,不能采用“同步加載”,只能采用“異步加載”,因此 AMD 產(chǎn)生了。與 CommonJS 最大的不同在于它采用異步的方式去加載依賴的模塊。

特點:

專門用于瀏覽器端;

模塊的加載是異步的, 模塊的加載不影響它后面語句的運行。所有依賴這個模塊的語句,都定義在一個回調(diào)函數(shù)中,等到加載完成之后,這個回調(diào)函數(shù)才會運行;

使用:

引入模塊:

定義模塊:

模塊必須采用特定的?define()?函數(shù)來定義。

1.定義的模塊不依賴其他模塊

2.定義的模塊依賴其他模塊,那么?define()?函數(shù)的第一個參數(shù),必須是一個數(shù)組.

實現(xiàn):

RequireJS

通過?define?方法,將代碼定義為模塊;通過?require?方法,實現(xiàn)代碼的模塊加載。

RequireJS 引入的文件(模塊),只會解釋執(zhí)行一次,所以引入的模塊也可用作全局變量。

RequireJS 要求,每個模塊是一個單獨的 js 文件。

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

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

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