不明白什么是模塊化……
寫了一篇文章,把RequireJS和jQuery插件對(duì)比,有人提出說,這不是一回事……
RequireJS的模塊化概念,按我的理解就是把功能獨(dú)立出來可以復(fù)用;
而jQuery寫的插件也可以完成此功能(雖然沒有解決依賴問題);
但認(rèn)為本質(zhì)上是一致的;
什么是模塊化?和插件有什么不同呢?
ringa_lee
好吧,這個(gè)坑是我挖的,讓我來填?。ê?jiǎn)直為題主捉急)
先說模塊化???wiki 的定義:
Modular design, or "modularity in design", is a design approach that subpides a system into smaller parts called modules or skids, that can be independently created and then used in different systems.
即所謂 將邏輯細(xì)化,以便重復(fù)使用。
再來看插件化,還是 wiki):
In computing, a plug-in (or plugin, add-in, addin, add-on, addon, or extension) is a software component that adds a specific feature to an existing computer program.
即 插件化 是 一種為一個(gè)特定系統(tǒng)增加一個(gè)特定功能的手段。
插件化 與 模塊化 關(guān)系如下:
插件化 是一種 特殊的模塊化,每個(gè)插件都是一個(gè)模塊。
插件化意義下的模塊(插件)只應(yīng)該實(shí)現(xiàn)與擴(kuò)展其宿主系統(tǒng)相關(guān)的功能,而不應(yīng)攜帶無關(guān)邏輯。注意這里是應(yīng)該,是應(yīng)該,是應(yīng)該,技術(shù)層面上沒有限制你不能這么做,但如果不這么做你的同伴可能會(huì)打你。
模塊化意義下的模塊則沒有功能上的限制。
也就是說,它們的差別在于:
插件化只應(yīng)該干和擴(kuò)展有關(guān)的事,而模塊化干什么都可以。
插件化只應(yīng)該干和擴(kuò)展有關(guān)的事,而模塊化干什么都可以。
插件化只應(yīng)該干和擴(kuò)展有關(guān)的事,而模塊化干什么都可以。
具體到 jQuery,我們看看它的定義:
jQuery is a cross-platform JavaScript library designed to simplify the client-side scripting of HTML.
-- via https://en.wikipedia.org/wiki/JQuery
這說明 jQuery 的宗旨是簡(jiǎn)化客戶端的編程,因而 jQuery 插件只能干和這有關(guān)的事。
你封裝了一個(gè)倒計(jì)時(shí)牌插件,可以。因?yàn)檫@符合宗旨。
你封裝了一個(gè) 監(jiān)聽某個(gè)富文本編輯器的輸入并實(shí)時(shí)檢測(cè)有沒有XSS腳本若有則提示同時(shí)在用戶點(diǎn)擊發(fā)布后Ajax提交內(nèi)容至后端并處理來自后端的錯(cuò)誤提示或成功提醒 插件,絕對(duì)不行。根據(jù)宗旨,這不應(yīng)該是一個(gè)插件,著屬于業(yè)務(wù)邏輯模塊。誠(chéng)然,jQuery 沒有阻止你將其做成插件,只不過旁人看到時(shí)會(huì)恨不得吃了你。
模塊是獨(dú)立存在可以完成一定功能的代碼段。
而插件是必須依賴相應(yīng)平臺(tái)才能工作的代碼段。
這就是他們之間的區(qū)別。
RequireJS是用來實(shí)現(xiàn)js模塊化的,類似的還有國(guó)產(chǎn)的seajs,兩者的模塊化規(guī)范不同,前者amd后者cmd,按照模塊化的規(guī)范,每一個(gè)插件都應(yīng)該是一個(gè)模塊(實(shí)現(xiàn)一些功能),每個(gè)模塊一個(gè)文件