詳解jquery和vue對(duì)比
前言:很多人說(shuō)jquey和vue沒(méi)有什么可比的,應(yīng)該和Angular,React來(lái)比吧,我到覺(jué)得他們倒沒(méi)有多大的可比性,都是基于mvvm思想設(shè)計(jì)的框架,無(wú)非就是實(shí)現(xiàn)的方式不一樣,在不同場(chǎng)景下性能上會(huì)有一些差異。然而從jquery到vue或者說(shuō)是到mvvm的轉(zhuǎn)變則是一個(gè)思想想的轉(zhuǎn)變,是將原有的直接操作dom的思想轉(zhuǎn)變到操作數(shù)據(jù)上去,難道不是一個(gè)根本性的改變嗎?
1.jquery介紹:想必大家都用過(guò)jquery吧,這個(gè)曾經(jīng)也是現(xiàn)在依然最流行的web前端js庫(kù),可是現(xiàn)在無(wú)論是國(guó)內(nèi)還是國(guó)外他的使用率正在漸漸被其他的js庫(kù)所代替,隨著瀏覽器廠商對(duì)HTML5規(guī)范統(tǒng)一遵循以及ECMA6在瀏覽器端的實(shí)現(xiàn),jquery的使用率將會(huì)越來(lái)越低
2.vue介紹:vue是一個(gè)興起的前端js庫(kù),是一個(gè)精簡(jiǎn)的MVVM。從技術(shù)角度講,Vue.js 專注于 MVVM 模型的 ViewModel 層。它通過(guò)雙向數(shù)據(jù)綁定把 View 層和 Model 層連接了起來(lái),通過(guò)對(duì)數(shù)據(jù)的操作就可以完成對(duì)頁(yè)面視圖的渲染。當(dāng)然還有很多其他的mvmm框架如Angular,React都是大同小異,本質(zhì)上都是基于MVVM的理念。 然而vue以他獨(dú)特的優(yōu)勢(shì)簡(jiǎn)單,快速,組合,緊湊,強(qiáng)大而迅速崛起
3.vue和jquey對(duì)比
jQuery是使用選擇器($)選取DOM對(duì)象,對(duì)其進(jìn)行賦值、取值、事件綁定等操作,其實(shí)和原生的HTML的區(qū)別只在于可以更方便的選取和操作DOM對(duì)象,而數(shù)據(jù)和界面是在一起的。比如需要獲取label標(biāo)簽的內(nèi)容:$("lable").val();,它還是依賴DOM元素的值。
Vue則是通過(guò)Vue對(duì)象將數(shù)據(jù)和View完全分離開(kāi)來(lái)了。對(duì)數(shù)據(jù)進(jìn)行操作不再需要引用相應(yīng)的DOM對(duì)象,可以說(shuō)數(shù)據(jù)和View是分離的,他們通過(guò)Vue對(duì)象這個(gè)vm實(shí)現(xiàn)相互的綁定。這就是傳說(shuō)中的MVVM。
4.舉例說(shuō)明
場(chǎng)景一:列表添加一個(gè)元素,下圖為vue和jquery兩種操作的代碼,我們從中可以看出vue只需要向數(shù)據(jù)message里面push一條數(shù)據(jù)即可完成添加一個(gè)li標(biāo)簽的操作,而jquery則需要獲取dom元素節(jié)點(diǎn),并對(duì)dom進(jìn)行添加一個(gè)標(biāo)簽的操作,如果dom結(jié)構(gòu)特別復(fù)雜,或者添加的元素非常復(fù)雜,則代碼會(huì)變得非常復(fù)雜且閱讀性低
vue:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="app">
<ul>
<!--根據(jù)數(shù)組數(shù)據(jù)自動(dòng)渲染頁(yè)面-->
<li v-for="item in message">{{item}}</li>
</ul>
<button @click="add">添加數(shù)據(jù)</button>
</div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
message: ["第1條數(shù)據(jù)","第2條數(shù)據(jù)"],
i:2
},
methods:{
//向數(shù)組添加一條數(shù)據(jù)即可
add:function(){
this.i++
this.message.push("第"+this.i+"條數(shù)據(jù)")
}
}
})
</script>
jquery:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="app">
<ul id="list">
<li>第1條數(shù)據(jù)</li>
<li>第2條數(shù)據(jù)</li>
</ul>
<button id="add">添加數(shù)據(jù)</button>
</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
var i=2;
$('#add').click(function() {
i++;
//通過(guò)dom操作在最后一個(gè)li元素后手動(dòng)添加一個(gè)標(biāo)簽
$("#list").children("li").last().append("<li>第"+i+"條數(shù)據(jù)</li>")
});
});
</script>

場(chǎng)景二:控制按鈕的顯示隱藏,下圖為vue和jquery兩種操作的代碼,我們從中可以看出vue只需要控制屬性isShow的值為true和false即可,而jquery則還是需要操作dom元素控制按鈕的顯示和隱藏
vue:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="app">
<ul>
<!--根據(jù)數(shù)組數(shù)據(jù)自動(dòng)渲染頁(yè)面-->
<li v-for="item in message">{{item}}</li>
</ul>
<button @click="add" v-show="isShow">添加數(shù)據(jù)</button>
<button @click="showButton">隱藏按鈕</button>
</div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script>
new Vue({
el: '#app',
data: {
message: ["第1條數(shù)據(jù)","第2條數(shù)據(jù)"],
i:2,
isShow:true
},
methods:{
//向數(shù)組添加一條數(shù)據(jù)即可
add:function(){
this.i++
this.message.push("第"+this.i+"條數(shù)據(jù)")
},
//控制isShow的值即可
showButton:function(){
this.isShow=false;
}
}
})
</script>
jquery:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="app">
<ul id="list">
<li>第1條數(shù)據(jù)</li>
<li>第2條數(shù)據(jù)</li>
</ul>
<button id="add">添加數(shù)據(jù)</button>
<button id="showButton">隱藏按鈕</button>
</div>
</body>
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
var i=2;
$('#add').click(function() {
i++;
//通過(guò)dom操作在最后一個(gè)li元素后手動(dòng)添加一個(gè)標(biāo)簽
$("#list").children("li").last().append("<li>第"+i+"條數(shù)據(jù)</li>")
});
//需要手動(dòng)隱藏dom元素
$("#showButton").click(function(){
$("#add").hide()
})
});
</script>
輸出結(jié)果:

4.總結(jié):內(nèi)容講的比較淺,主要就是分析一下vue和jquey對(duì)比的區(qū)別,上面兩個(gè)例子只是做了一個(gè)簡(jiǎn)單的說(shuō)明,然而vue能解決的問(wèn)題遠(yuǎn)比這些要多的多,復(fù)雜的多。
vue適用的場(chǎng)景:復(fù)雜數(shù)據(jù)操作的后臺(tái)頁(yè)面,表單填寫(xiě)頁(yè)面
jquery適用的場(chǎng)景:比如說(shuō)一些html5的動(dòng)畫(huà)頁(yè)面,一些需要js來(lái)操作頁(yè)面樣式的頁(yè)面
然而二者也是可以結(jié)合起來(lái)一起使用的,vue側(cè)重?cái)?shù)據(jù)綁定,jquery側(cè)重樣式操作,動(dòng)畫(huà)效果等,則會(huì)更加高效率的完成業(yè)務(wù)需求
5. 附上公司前端目錄結(jié)構(gòu),感興趣的可以分享代碼給大家看看
src代碼目錄包含assets靜態(tài)文件,components vue組件文件,plugins 插件文件(包含登錄操作,http請(qǐng)求操作,過(guò)濾器,加解密操作,公共方法等),router 路由文件,store vuex文件,app.js vue相關(guān)配置,index.html主頁(yè)面

build目錄為webpack打包文件,dist目錄為打包后生成的文件,node_modules 引用的外部組件

以上所述是小編給大家介紹的jquery和vue對(duì)比詳解整合,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 如何在vue 中引入使用jquery
- 使vue實(shí)現(xiàn)jQuery調(diào)用的兩種方法
- jQuery會(huì)死嗎?我為什么不用vue寫(xiě)富文本
- 在Vue項(xiàng)目中引入JQuery-ui插件的講解
- 在vue項(xiàng)目中使用Jquery-contextmenu插件的步驟講解
- jQuery+vue.js實(shí)現(xiàn)的多選下拉列表功能示例
- vue-cli 引入jQuery,Bootstrap,popper的方法
- 深入淺析angular和vue還有jquery的區(qū)別
- Vue引入jquery實(shí)現(xiàn)平滑滾動(dòng)到指定位置
- 到底該拋不拋棄JQuery
相關(guān)文章
Vue3?使用v-md-editor如何動(dòng)態(tài)上傳圖片的方法實(shí)現(xiàn)
本文主要介紹了Vue3?使用v-md-editor如何動(dòng)態(tài)上傳圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
vue實(shí)現(xiàn)商品詳情頁(yè)功能之商品選項(xiàng)卡
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)商品詳情頁(yè)功能之商品選項(xiàng)卡,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
vue中如何給多個(gè)按鈕動(dòng)態(tài)添加類名
這篇文章主要介紹了vue中如何給多個(gè)按鈕動(dòng)態(tài)添加類名問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
vue?element?el-select下拉滾動(dòng)加載的方法
很多朋友都遇到這樣一個(gè)問(wèn)題在使用vue+element的el-select下拉框加載返回?cái)?shù)據(jù)太多時(shí),會(huì)造成卡頓,用戶體驗(yàn)欠佳,這篇文章主要介紹了vue?element?el-select下拉滾動(dòng)加載方法,需要的朋友可以參考下2022-11-11
Vue3實(shí)現(xiàn)組件級(jí)基類的多種方法
vue3提供了 mixins和extends,但是嘗試之后發(fā)現(xiàn)這兩種方法只支持純OptionAPI,設(shè)置的data會(huì)被識(shí)別,但是設(shè)置的setup里return 的 reactive,完全無(wú)效,setup也沒(méi)有被執(zhí)行,這篇文章主要介紹了Vue3實(shí)現(xiàn)組件級(jí)基類的幾種方法,需要的朋友可以參考下2023-04-04

