SeaJS 與 RequireJS 的差別1

SeaJS 遵循 CMD 規範,RequireJS 遵循 AMD 規範。異步

CMD 模塊依賴聲明方式:函數

define(function (require) { var a = require('./a'); var b = require('./b');
})

CMD 規範的弊端工具

  1. 不能直接壓縮:require是局部變量,意味着不能直接的經過壓縮工具進行壓縮,若require這個變量被替換,加載器與自動化工具將沒法獲取模塊的依賴。
  2. 模塊書寫有額外約定:路徑參數不能進行字符串運算,不能使用變量代替,不然加載器與自動化工具沒法正確提取路徑。

AMD 模塊依賴聲明方式:ui

define(['./a', './b'], function (a, b) { // more code .. })

AMD 規範的弊端spa

  1. 依賴提早聲明在代碼書寫上不是那麼友好
  2. 模塊內部與 NodeJS 的 Modules 有必定的差別
其實不管是 CMD 仍是 AMD 的異步模塊,都沒法與同步模塊規範保持一致(NodeJS 的 Modules),
只有誰比誰更像同步模塊而已。AMD 要轉換爲同步模塊,除了去掉define函數的包裹外,
須要在頭部使用require把依賴聲明好,而 CMD 只須要去掉definedefinerequiredefine函數的包裹便可。
相關文章
相關標籤/搜索