js模塊化解決方案規範

  • 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時不會去執行模塊,只是生成一個指向被加載模塊的引用,需要開發者保證真正取值時能夠取到值,只要引用是存在的,代碼就能執行

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章