與 RequireJS 的異同

2018-11-09 10:06 更新

相同之處

RequireJS 和 Sea.js 都是模塊加載器,倡導(dǎo)模塊化開(kāi)發(fā)理念,核心價(jià)值是讓 JavaScript 的模塊化開(kāi)發(fā)變得簡(jiǎn)單自然。

不同之處

兩者的主要區(qū)別如下:

  1. 定位有差異。RequireJS 想成為瀏覽器端的模塊加載器,同時(shí)也想成為 Rhino / Node 等環(huán)境的模塊加載器。Sea.js 則專(zhuān)注于 Web 瀏覽器端,同時(shí)通過(guò) Node 擴(kuò)展的方式可以很方便跑在 Node 環(huán)境中。

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

  3. 推廣理念有差異。RequireJS 在嘗試讓第三方類(lèi)庫(kù)修改自身來(lái)支持 RequireJS,目前只有少數(shù)社區(qū)采納。Sea.js 不強(qiáng)推,采用自主封裝的方式來(lái)“海納百川”,目前已有較成熟的封裝策略。

  4. 對(duì)開(kāi)發(fā)調(diào)試的支持有差異。Sea.js 非常關(guān)注代碼的開(kāi)發(fā)調(diào)試,有 nocache、debug 等用于調(diào)試的插件。RequireJS 無(wú)這方面的明顯支持。

  5. 插件機(jī)制不同。RequireJS 采取的是在源碼中預(yù)留接口的形式,插件類(lèi)型比較單一。Sea.js 采取的是通用事件機(jī)制,插件類(lèi)型更豐富。

還有不少差異,涉及具體使用方式和源碼實(shí)現(xiàn),歡迎有興趣者研究并發(fā)表看法。

總之,如果說(shuō) RequireJS 是 Prototype 類(lèi)庫(kù)的話,則 Sea.js 致力于成為 jQuery 類(lèi)庫(kù)。

最重要的

最后,向 RequireJS 致敬!RequireJS 和 Sea.js 是好兄弟,一起努力推廣模塊化開(kāi)發(fā)思想,這才是最重要的。

更新

參考


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)