Vue開(kāi)發(fā)過(guò)程中遇到的疑惑知識(shí)點(diǎn)總結(jié)
前言
Vue.js是當(dāng)下很火的一個(gè)JavaScript MVVM庫(kù),它是以數(shù)據(jù)驅(qū)動(dòng)和組件化的思想構(gòu)建的。相比于Angular.js,Vue.js提供了更加簡(jiǎn)潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。最近終于有時(shí)間空下來(lái),所以想著把在使用vue過(guò)程遇到的一些問(wèn)題疑惑總結(jié)處理,方便自己或者有需要的朋友們參考,下面話不多說(shuō)了,來(lái)看看詳細(xì)的介紹吧。
一、計(jì)算緩存computed與Methods
html代碼:
<div id='app'>
<p>{{ msg }}</p>
<p>reverse {{ reverse2 }}</p>
</div>
JS
var app = new Vue({
el : '#app'
data : {
msg : '初始值'
}
,
methods : {
reverse : function(){
this.msg = this.msg.split('').reverse().join('');
}
},
created : function(){
console.log('msg is creadted' + new Date() );
},
computed : {
reverse2 : function(){
return this.msg.split('').reverse().join('') + new Date();
}
}
});

計(jì)算屬性就可以看作普通屬性一樣來(lái)使用
更改html
<div id='app'>
<p>{{ msg }}</p>
<button v-on:click='reverse'>{{ new Date()}} </button>
</div>

結(jié)論:
- 相同點(diǎn): 兩者完成的功能都是一樣的.
- 不同點(diǎn): 計(jì)算屬性computed更依賴(lài)緩存,也就是說(shuō)只要msg(你的數(shù)據(jù))不發(fā)生變化,reverse2這個(gè)計(jì)算屬性就不會(huì)重新計(jì)算,還是會(huì)使用之前的.而Methods是你每一次調(diào)用就會(huì)重新進(jìn)行計(jì)算,重新渲染.
所以如果你的計(jì)算屬性很復(fù)雜,就可以考慮使用計(jì)算屬性,利用它的緩存可以保持很好的性能.
二、v-if和v-show區(qū)別
v-if: 如果初始渲染條件為false,那什么都不做,第一次為true時(shí)候,會(huì)進(jìn)行局部編譯,這個(gè)編譯會(huì)緩存起來(lái).當(dāng)條件再為false會(huì)銷(xiāo)毀事件監(jiān)聽(tīng)器和子組件.
v-show:始終存在dom里面,也就是說(shuō)始終被編譯了.之前按照display屬性來(lái)切換.
三、重塑數(shù)組的概念
就是說(shuō)有些數(shù)組方法調(diào)用后會(huì)改變?cè)瓟?shù)組—就是變異方法
調(diào)用后不會(huì)改變?cè)瓟?shù)組就是非變異方法
Vue不可以做的事(關(guān)于數(shù)組重塑)
- 直接通過(guò)設(shè)置一個(gè)項(xiàng)的索引值. vm.items[indexOfItem] = newValue
- 直接修改數(shù)組長(zhǎng)度. vm.items.length = newLength
針對(duì)上述兩種提供我們可以使用
Vue.set() splice()
四、顯示數(shù)組的過(guò)濾與排序
通過(guò)返回一個(gè)過(guò)濾或者排序的數(shù)組的計(jì)算屬性
//html
<ul>
<li v-for='n in soets'>{{ n }}</li>
</ul>
//js
computed : {
soets : function(){
return this.number.filter(function(num){
return num > 2;
})
}
}
通過(guò)methods來(lái)實(shí)現(xiàn):
//html
<ul>
<li v-for='n in sort()'>{{ n }}</li>
</ul>
//js
methods : {
sort : function(){
return this.number.filter(function(num){
return num >2
});
}
},
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。
相關(guān)文章
vue3+ElementPlus+VueCropper實(shí)現(xiàn)上傳圖片功能
文章介紹了如何在Vue3、ElementPlus和VueCropper組件中實(shí)現(xiàn)圖片上傳和裁剪功能,包括放大、縮小等操作,感興趣的朋友跟隨小編一起看看吧2025-01-01
Vue中引入echarts的步驟及折線圖、柱狀圖常見(jiàn)配置項(xiàng)
這篇文章主要介紹了Vue中引入echarts的步驟及折線圖、柱狀圖常見(jiàn)配置項(xiàng),需要的朋友可以參考下2023-11-11
vue實(shí)現(xiàn)tab欄點(diǎn)擊高亮效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)tab欄點(diǎn)擊高亮效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
vue.js自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的示例代碼
這篇文章主要介紹了vue.js自定義組件實(shí)現(xiàn)v-model雙向數(shù)據(jù)綁定的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Vue.sync修飾符與$emit(update:xxx)詳解
這篇文章主要介紹了Vue.sync修飾符與$emit(update:xxx),實(shí)現(xiàn)思路非常簡(jiǎn)單,文章介紹了.sync修飾符的作用和使用.sync修飾符的寫(xiě)法,實(shí)現(xiàn)代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11
vue+animation動(dòng)畫(huà)實(shí)現(xiàn)跑馬燈效果
這篇文章主要為大家詳細(xì)介紹了vue+animation動(dòng)畫(huà)實(shí)現(xiàn)跑馬燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
vue中報(bào)錯(cuò)Duplicate?keys?detected:'1'.?This?may?c
我們?cè)趘ue開(kāi)發(fā)過(guò)程中常會(huì)遇到一些錯(cuò)誤,這篇文章主要給大家介紹了關(guān)于vue中報(bào)錯(cuò)Duplicate?keys?detected:‘1‘.?This?may?cause?an?update?error的解決方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
vue elementUI 表單校驗(yàn)功能之?dāng)?shù)組多層嵌套
這篇文章主要介紹了vue elementUI 表單校驗(yàn)(數(shù)組多層嵌套)功能的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-06-06

