1. 程式人生 > >vue 與jq 的對比

vue 與jq 的對比

集合 兩個 imp 一定的 虛擬 業務 切換 port 集中

vue、react和angular,眾所周知,他們是前端框架的3個大佬。這篇主要想對比一下用vue和用jq的區別,至於和其他框架的對比,我想vue的官網說的更為詳細。

我算是獨自用vue寫過一個小型項目,然後維護過一個用react寫的項目。至於angular2。。。只跟著寫了下官方的例子。

首先,vue是啥。。。官方說法是--- Vue (讀音 /vju?/,類似於 view) 是一套用於構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計為可以自底向上逐層應用。

這裏就有兩個疑問了,什麽是漸進式框架,什麽是自底向上逐層應用。

首先漸進式框架,你可以理解為vue(單單只是vue)是一個“核”,它盡可能的將自己精簡,只保留核心功能,然後其他的功能再視情況拓展。舉個例子就是:

一開始,你可以只把vue當做一個js庫,像一個js插件那樣使用。我以前也試過想用它來裝裝X,強行把它放到一個項目中使用,只把一個列表渲染出來。

然後,你用了後發現,哎?這種數據驅動的方式蠻舒服的。這時你就想把整個項目都用vue來做了。

再後來,你又想用個vue-router去做一下單頁面。(vue-router已經不是核心的功能了,是拓展的)

再後來,你發現數據的流轉有點長了,於是想用 vuex去管理一下數據。(再拓展)

再到SEO..blablabla

可以看到,vue可以逐步的去完成一個中大型項目的搭建,功能是漸進增加。這就是漸進式了。。

至於逐層。。。。。。感覺和漸進式差不多,我沒有去查。

說了這麽一大堆,終於到了vue和jq的區別了。或者說,我為啥要用vue啊,還要學,又有全家桶,又blablabla.....

別急施主,請聽我細細道來。。。

1、精力集中。Jq偏重於對dom的操作,由它的函數就很容易看出來,$()、parent()、find()。我們用jq的時候經常要去考慮怎麽去渲染數據,怎麽從視圖中取到數據,這其實分散了我們的本該放在業務邏輯上的精力。而Vue則是數據驅動的,可以理解為我們需要先定義一種數據到視圖的渲染規則,之後如果數據發生改變了,vue會幫我們重新渲染,所以我們只需將註意力放在怎麽修改數據上就可以了。

2、代碼結構。如果你用jq沒有好的代碼架構,很容易就回出現一種情況就是:js裏寫著html元素代碼,而且可能會遍布很多地方。因為增刪改查你都需要對dom進行操作,這裏甚至可能會寫多了些冗余代碼。代碼架構好一點的,可能會寫成一種簡版框架(即有專門的渲染函數,增刪改查都會調用這個函數)。而vue就沒有這個問題。
3、操作性

。用jq去操作dom實際上是蠻麻煩的。比如說又個對象數組已經渲染成表格了,這時你需要修改某一個id的那個對象的數據行,jq的話最麻煩的做法就是在遍歷裏面先拿到id,檢查相等,相等的話,用index去拿到要改的那個dom,再重新渲染。blablabla…而用vue的話,可以直接修改數據就可以了,而且你甚至可以用Array.map Array.filter 美滋滋~
4、模塊化。使用jq的時候,如果你的js牛逼轟轟的寫得已經超長了,然後你又覺得需要分下模塊了,這時你有兩選擇,1是用seajs,requirejs等,2是用原生的import去管理你的代碼。說實話,我沒怎麽用過requirejs去分模塊,可能是我壓根就想到這些js要怎麽分。但vue的話我感覺模塊和組件差不多,各個頁面可以是一個模塊,頁面裏面的某一塊也可以是一個模塊,我覺得vue維護起來比jq要容易得多。
5、單頁面實現。講真,單頁面的實現原理估計大家都很熟了,一般是幾個div在來回切換。如果一開始已經寫好html,再來回切的話,html是太長了。如果用js去寫又拼的很麻煩。如果你想用jq、原生實現頁面切換,我能想到比較好的方式是用模版引擎...嗎?但其實單頁面的實現我感覺沒那麽簡單,你不單單要考慮html能否單獨寫出來,還要考慮js需不需要按需加載,路由需不需要等等。。。用vue就不需要煩這些東西。
6、組件的復用。用vue最爽的莫過於使用別人寫好的組件。UI組件我那個項目用的是element UI,其實如果你項目大的時候,有些組件(一些功能和視圖的集合)可能會復用。這些相對於jq就是插件了,我就是不爽用script引入插件怎麽了嘛?
7、性能。vue使用了虛擬dom技術,能夠減少 dom的操作,能提高一定的效率。

最後,我為vue打call。。。。。。。

vue 與jq 的對比