模塊化開發的CMD和AMD區別

AMD 是 RequireJS 在推廣過程中對模塊定義提出的概念。
CMD 是 SeaJS 在推廣過程中對模塊定義提出的概念。

RequireJS 和 Sea.js 都是模塊加載器,倡導模塊化開發理念,核心價值是讓 JavaScript 的模塊化開發變得簡單自然。

不同之處

兩者的主要區別如下:

  1. 定位有差異。RequireJS 想成爲瀏覽器端的模塊加載器,同時也想成爲 Rhino / Node 等環境的模塊加載器。Sea.js 則專注於 Web 瀏覽器端,同時通過 Node 擴展的方式可以很方便跑在 Node 環境中。

  2. 遵循的規範不同。RequireJS 遵循 AMD(異步模塊定義)規範,Sea.js 遵循 CMD (通用模塊定義)規範。規範的不同,導致了兩者 API 不同。Sea.js 更貼近 CommonJS Modules/1.1 和 Node Modules 規範。

  3. CMD 推崇依賴就近,AMD 推崇依賴前置
  4. 推廣理念有差異。RequireJS 在嘗試讓第三方類庫修改自身來支持 RequireJS,目前只有少數社區採納。Sea.js 不強推,採用自主封裝的方式來“海納百川”,目前已有較成熟的封裝策略。
  5. 對開發調試的支持有差異。Sea.js 非常關注代碼的開發調試,有 no***、debug 等用於調試的插件。RequireJS 無這方面的明顯支持。
  6. 插件機制不同。RequireJS 採取的是在源碼中預留接口的形式,插件類型比較單一。Sea.js 採取的是通用事件機制,插件類型更豐富。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章