-
AMD
- 是由RequireJS推動一個異步加載模塊的規範,通過define定義模塊,require去引用模塊
- 推崇依賴前置,在定義模塊的時候就要聲明其依賴的模塊,提前執行
-
CMD
- 是由SeaJS推動的模塊化規範,推崇一個模塊一個文件,通過define定義模塊,seajs.use來加載模塊
- 推崇就近依賴,只有在用到某個模塊的時候再去require,延遲執行
-
CommenJS是一種同步加載模塊的規範,被nodejs推廣開,使用module.exports和require開發
-
UMD是AMD和CommonJS的糅合,umd先判斷是否支持Node.js的模塊(exports)是否存在,存在則使用Node.js模塊模式。在判斷是否支持AMD(define是否存在),存在則使用AMD方式加載模塊
模塊的循環加載
CommonJS模塊是加載時執行,即腳本代碼在require時就全部執行。一旦出現某個模塊被“循環加載”,就只輸出已經執行的部分,沒有執行的部分不會輸出;再次加載直接從緩存中獲取
S6模塊對導出變量、方法、對象是動態引用,遇到模塊加載命令import時不會去執行模塊,只是生成一個指向被加載模塊的引用,需要開發者保證真正取值時能夠取到值,只要引用是存在的,代碼就能執行