W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
RequireJS 和 Sea.js 都是模塊加載器,倡導(dǎo)模塊化開(kāi)發(fā)理念,核心價(jià)值是讓 JavaScript 的模塊化開(kāi)發(fā)變得簡(jiǎn)單自然。
兩者的主要區(qū)別如下:
定位有差異。RequireJS 想成為瀏覽器端的模塊加載器,同時(shí)也想成為 Rhino / Node 等環(huán)境的模塊加載器。Sea.js 則專(zhuān)注于 Web 瀏覽器端,同時(shí)通過(guò) Node 擴(kuò)展的方式可以很方便跑在 Node 環(huán)境中。
遵循的規(guī)范不同。RequireJS 遵循 AMD(異步模塊定義)規(guī)范,Sea.js 遵循 CMD (通用模塊定義)規(guī)范。規(guī)范的不同,導(dǎo)致了兩者 API 不同。Sea.js 更貼近 CommonJS Modules/1.1 和 Node Modules 規(guī)范。
推廣理念有差異。RequireJS 在嘗試讓第三方類(lèi)庫(kù)修改自身來(lái)支持 RequireJS,目前只有少數(shù)社區(qū)采納。Sea.js 不強(qiáng)推,采用自主封裝的方式來(lái)“海納百川”,目前已有較成熟的封裝策略。
對(duì)開(kāi)發(fā)調(diào)試的支持有差異。Sea.js 非常關(guān)注代碼的開(kāi)發(fā)調(diào)試,有 nocache、debug 等用于調(diào)試的插件。RequireJS 無(wú)這方面的明顯支持。
插件機(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ā)思想,這才是最重要的。
2013.06.30 推薦一篇圖片并茂的文章:Sea.js 與 RequireJS 最大的區(qū)別
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: