jQuery和Vue的技術優劣對比

 

已經9012年了,如果你的公司還在用table+div佈局,用jq操作dom,請離職!

前端技術日新月異,vue所提倡的數據驅動視圖和jQuery的直接操作DOM在編寫頁面時的思路是完全不同的。雖然兩種思路是完全不同的,但也不能說是不能一起用的,在某些沒有辦法的情況下(例如需要操作dom的情況下),把jQuery和vue用在一塊是完全沒問題的,當然把這兩種技術用在一起是肯定不會出現在最佳實踐裏的,因爲確實沒有特殊情況的話,這樣用就是有點自找麻煩了。

以下是對傳統jq與目前最熱的vue進行的技術特性對比:

1、精力集中。

Jq偏重於對dom的操作,由它的函數就很容易看出來,$()、parent()、find()。我們用jq的時候經常要去考慮怎麼去渲染數據,怎麼從視圖中取到數據,操作數據前必須對dom節點進行選取修改賦值等操作,這其實分散了我們的本該放在業務邏輯上的精力。而Vue則是基於MVVM思想,數據驅動,雙向綁定,只需要定義好渲染規則,如果數據發生改變,vue會幫我們重新渲染整個頁面,所以我們只需將注意力放在數據操作上就可以了。

2、代碼結構。

如果你用jq沒有好的代碼架構,很容易就回出現一種情況就是:js裏寫着html元素代碼,而且可能會遍佈很多地方。因爲增刪改查你都需要對dom進行操作,這裏甚至可能會寫多了些冗餘代碼。代碼架構好一點的,可能會寫成一種簡版框架(即有專門的渲染函數,增刪改查都會調用這個函數),依然是全域的,需要閉包。而vue就沒有這個問題方法全部寫在methods中,提供多種鉤子函數對頁面渲染過成進行精準操作。

3、操作性。

用jq去操作dom實際上是蠻麻煩的。比如說又個對象數組已經渲染成表格了,這時你需要修改某一個id的那個對象的數據行,jq的話最麻煩的做法就是在遍歷裏面先拿到id,檢查相等,相等的話,用index去拿到要改的那個dom,再重新渲染。而用vue的話,可以直接修改數據就可以了,而且你甚至可以用Array.map Array.filter ,方便快捷,提升開發效率

4、模塊化。

目前無論前端還是後端開發,越來越傾向於模塊化組件化,以求降低不同模塊,不同功能區塊之間的耦合度,便於後期業務的修改與拓展,vue完全cover上述特性,而使用jq的時候,如果你的js牛逼轟轟的寫得已經超長了,然後你又覺得需要分下模塊了,這時你有兩選擇,1是用seajs,requirejs等,2是用原生的import去管理你的代碼。說實話,我沒怎麼用過requirejs去分模塊,可能是我壓根就想沒到這些js要怎麼分。

5、單頁面實現。

單頁面的實現原理估計大家都很熟了,一般是幾個div在來回切換。如果一開始已經寫好html,再來回切的話,html是太長了。如果用js去寫又拼的很麻煩。如果你想用jq、原生實現頁面切換,我能想到比較好的方式是用模版引擎...嗎?但其實單頁面的實現我感覺沒那麼簡單,你不單單要考慮html能否單獨寫出來,還要考慮js需不需要按需加載,路由需不需要等等。。。用vue就不需要煩這些東西,vue自動構建單頁應用,使用router模擬跳轉。

6、組件的複用。

用vue最爽的莫過於使用別人寫好的組件。目前vue的生態已經非常龐大,主流的組件庫有element-ui,iview,使用主流的組件庫不僅避免了我們重複造輪子,而且方便新員工快速接手項目,某個大神的組件總結:https://www.toutiao.com/i6718405521088446988/?timestamp=1564450212&app=news_article&group_id=6718405521088446988&req_id=20190730093011010018026159736CF92,其實如果你項目大的時候,有些組件(一些功能和視圖的集合)可能會複用。這些相對於jq就是插件了,個人不喜歡script引入插件(任性)

7、性能。

vue使用了虛擬dom技術,能夠減少 dom的操作,能提高一定的效率。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章