jQuery 是庫(library)還是框架(framework)?

看到拉鉤上面很多招聘說要會jquery框架的,可我怎麼覺得jQuery是個庫啊,不是框架,我有些迷惑。 在stackoverflow上面有個類似的問題,Is jquery a javascript library or framework? ,統一的答案是『 jQuery is liabrary,not framework 』。 那在中文裡是不是對應 『 jquery是庫,不是框架 』?


jQuery是庫,不是框架。

庫只管引進來使用,除了庫介面,沒有其他約束,隨便怎麼用,free style。

而框架則有著各種各樣的嚴格約束。

例如bootstrap,約束了DOM結構。

例如AnglarJS,也對DOM結構有約束。

這些都是框架。

框架就像一門語言,有自己的世界。

用了什麼框架,就得按照這個框架世界裡的規則行事編碼。


Framework 幫你設計架構,而 library 幫你寫代碼。


jQuery 是庫

因為:You call library. Framework calls you.


是庫。

但是,你可以把它當成框架來使用。以jQuery為基礎架構出你自己的框架,比如早幾年出現過的JMVC框架(後來的 CanJS),本質就是圍繞jQuery搭起來的框架。

我寫了七八年的JS,很喜歡這種架構方式,開始的時候起步很小很乾凈,沒有大型框架的累贅感,說實話開發也更有趣 - 框架里開發像填空,樂趣缺缺,靈活性受限,最後往往由開始的時候看不見的成本。

而jQuery的生態,工具本來就很豐富,在npmjs上搜搜就基本能找到,擴展jQuery也很容易,擴展其他的插件也不難。這種架構的套路用熟以後,你能體驗到真正的「敏捷」開發。

用jQuery和簡單類庫架構一個TODO應用


jQuery 絕對不能算作是 framework,頂多是 library。

但它在我心中一直都是 utils


jquery官網都說自己是庫而不是框架了,去官網看看吧


「jQuery is a fast, small, and feature-rich JavaScript library.」 -- 出自jQuery官網

分不清library和framework的,當我沒說。


更換一個庫,只需要修改所有調用這個庫的地方。比如 jquery 的某個功能切換到其他單一功能的庫(ajax-》superagent)。更換一個框架,往往需要改變代碼組織結構,修改移動大量代碼。比如React 切換到 Vue。


庫和框架區分很簡單,庫讓你的工作更順手。框架限制你的自由度,讓你感到有些彆扭,但讓公司員工之間配合開發更順手。


推薦閱讀:

android怎樣破解已使用加殼技術的APP?
如何閱讀程序源代碼?
如何在中國大陸下載 Android 源代碼?
《源代碼》結尾時,戈德溫是否處在源代碼世界中?
如何看待那些燒腦的電影?

TAG:JavaScript | jQuery | 源代碼 | 前端開發框架和庫 |