1 回答

TA貢獻1803條經驗 獲得超6個贊
首先他們都是用javascript寫的,只不過是對javascript原生API更高一層的”封裝“,為我們開發應用過程中提供不同方面的“幫助”!別著急,往下看!
首先,你要搞清楚,最初javascript的出現就是為了操作HTML文檔和表單驗證,比如說:文檔對象模型(Document Object Model),這個DOM其實就是javascript給我們提供的一系列的API,讓我們通過直接調用相應的API來進行對文檔的操作。(當然,你要明白API的含義,其實計算機編程就是一層層的向上“抽象”出更高階的API)
舉個例子:
如果使用javascript DOM中的原生API,我們要獲取頁面中的一個id='cat'的元素,我們要這樣做:document.getElementById('cat')
其實這樣看起來也還好,但是,如果再加上操作,創建,甚至于javascript 提供了其他API比如發送http請求,使用javascript原生API就顯得太繁瑣,太臃腫了,科技的發展,社會的進步,不就是要不斷解放勞動力,生產力嘛。。哈哈哈,說到底就是懶!所以就有人想了個辦法,把這些原生api進行封裝,然后創造出更優雅更簡潔的api,比如使用jquery進行選擇id='cat'就是$('#cat')
你完全可以在這些API基礎上創造你自己的api,其實$('#cat')就是在調用一個名為'$'的函數數,同時傳遞了一個字符串'#cat'進去而已。你也同樣可以把javascript的原生api進行“封裝”成為你自己的api比如:
function sb(id){ return document.getElementById(id); }
這樣當你調用sb('cat')的時候,其實就相當于選擇了一個id='cat'的元素,當然這只是舉個例子,你可能注意到這里的參數沒有#號而jquery則有,這是因為,jquery內部使用一個叫sizzle的選擇器引擎進行解析等等,不過目標就是為了更好的為開發者提供友好的API!
OK,你看到這里或許可能明白,哦,jQuery就是對javascript提供的原生API更進一步的封裝,為用戶提供更友好的API!同時,jQuery還提供了很多瀏覽器兼容的解決方案,如果你使用原生javascript的話,你還需要處理很多瀏覽器兼容的問題。是不是聽聽就覺得麻煩!總之吧,在開發一個應用過程中,jQuery只扮演了一個角色,那就是讓你寫少量的代碼,解決同樣甚至更多的問題!
但是?。Query沒有告訴你,你的代碼要怎么寫,你的項目要怎么架構!或者說,你的項目,代碼要怎么組織才更合理!jQuery只是在當你想實現某個功能或者做某個應用的時候,讓你寫更少的代碼,但是沒有在乎你的項目!
正所謂條條大路通羅馬,解決問題是有好多種方法的,最終可能都是解決問題,但是方法有好有壞!當然好壞是你自己需要權衡的。
所以,站在項目架構的角度來看,人們通過多年的實踐積累,總結出一些所謂的“最佳實踐”模式,你提到的MVC就是其中的一種,而像angularjs,backbone, knockout, vue這些“框架”(注意這里用的是框架而不是庫)就是用javascript這門語言來實現MVC或者MVVM等等這些架構模式的。
那么目的是為了什么呢?目的就是為了讓你的項目“架構”更加合理,代碼質量更高,更便于維護。
當然,是否選用框架去做一個應用,也有很多爭論,其實這里有個權衡,比如,你做一個網站,這個網站可能就幾個頁面,然后做完之后基本上也不會怎么修改和添加新功能等等,在這種情況下我們就不用管 網站代碼以后是不是便于維護???代碼是不是可靠???等等吧。
但是,很多龐大的網站應用,需要持續的維護,更新等等,這時候他們就需要考慮到“合理架構”的問題了,所以angular這類框架的出現就是為了解決這一類問題的,因為這些框架的設計過程中都濃縮著好多他們獨特的思想在里面,還有一些他們自己給定義的一些專有名詞,比如scope, directive,filter等等, 但是他們的確就是為了做一件事情,讓你的架構更合理,代碼更易維護。
**所以,總結一下,jquery,或者underscore或者lodash這類的都可以看成對原生javascript API更進一步的封裝,同時給我們提供更友好,優雅的API的工具庫,讓我們寫更少的代碼做更多的事情。
而angular這類MV框架,則是讓我們站在一個項目的角度來講,讓整個項目架構更合理,代碼質量更高,邏輯更清晰,更易于維護。*
擦,打了這么多。我也是醉了!
添加回答
舉報