摘要:如果一次判斷的是多個元素,可以在內(nèi)置的元素上使用條件指令,最終渲染的結(jié)果不會包含該元素。列表渲染也支持用代替作為分隔符,它更接近迭代器的語法的表達(dá)式支持一個可選參數(shù)作為當(dāng)前項(xiàng)的索引。分隔符前的語句使用括號,第二項(xiàng)就是當(dāng)前項(xiàng)的索引。
學(xué)習(xí)筆記:內(nèi)置指令內(nèi)置指令 基本指令 v-cloak
v-cloak不需要表達(dá)式,它會在Vue實(shí)例結(jié)束編譯時從綁定的HTML元素上移除,經(jīng)常和CSS的display: none;配合使用:
{{message}}
當(dāng)網(wǎng)速較慢、Vue.js文件還沒加載完時,在頁面上會顯示{{message}}的字樣,直到Vue創(chuàng)建實(shí)例、編譯模板時,DOM才會被替換,所以這個過程屏幕有閃。只要加一句CSS就可以解決這個問題:
[v-cloak] { display: none; }
v-cloak是一個解決初始化慢導(dǎo)致頁面閃動的最佳實(shí)踐,對于簡單的項(xiàng)目很實(shí)用。
在工程化的項(xiàng)目中,項(xiàng)目的HTML結(jié)構(gòu)只有一個空的div元素,剩下的內(nèi)容都由路由掛載不同組件完成,這時不再需要v-cloak。
v-oncev-once是一個不需要表達(dá)式的指令,作用是定義它的元素或者組件只渲染一次,包括元素或組件的所有子節(jié)點(diǎn)。首次渲染后,不再隨數(shù)據(jù)的變化重新渲染,將被視為靜態(tài)內(nèi)容。
v-once在業(yè)務(wù)中很少使用,如果需要進(jìn)一步優(yōu)化性能時,可能會用到。
條件渲染指令 v-if、v-else-if、v-elseVue.js的條件指令可以根據(jù)表達(dá)式的值在DOM中渲染或銷毀元素/組件。
v-else-if要緊跟v-if,v-else要緊跟v-else-if或v-if,表達(dá)式的值為真時,當(dāng)前元素/組件及所有子節(jié)點(diǎn)將被渲染,為假時被移除。
如果一次判斷的是多個元素,可以在Vue.js內(nèi)置的元素上使用條件指令,最終渲染的結(jié)果不會包含該元素。
Vue在渲染元素時,處于效率考慮,會盡可能地復(fù)用已有的元素,而非重新渲染。
See the Pen 條件渲染指令 by whjin (@whjin) on CodePen.
示例中鍵入內(nèi)容后,點(diǎn)擊切換按鈕,雖然DOM改變了,但是之前在輸入框鍵入的內(nèi)容并沒有改變,只是替換了placeholder的內(nèi)容,說明元素被復(fù)用了。
使用Vue.js提供的key屬性,可以讓你自己決定是否要復(fù)用元素,key的值必須是唯一的。
給兩個元素都增加了key后,就不會復(fù)用了。切換類型時鍵入的內(nèi)容也會被刪除,不過元素仍然會被復(fù)用,因?yàn)闆]有添加key屬性。
v-showv-show的用法與v-if基本一致,只不過v-show是改變元素的CSS屬性display。
當(dāng)v-show表達(dá)式的值為false時元素會隱藏,DOM結(jié)構(gòu)元素上加載了內(nèi)聯(lián)樣式display:none;。
v-show不能在上使用。
v-if與v-show的選擇v-if和v-show具有類似的功能,不過v-if才是真正的條件渲染,它會根據(jù)表達(dá)式適當(dāng)?shù)?strong>銷毀或重建元素及綁定的事件或子組件。
若表達(dá)式初始值為false,則一開始元素/組件并不會渲染,只有當(dāng)條件第一次變?yōu)檎鏁r才開始編譯。
而v-show只是簡單的CSS屬性切換,無論條件真與否,都會被編譯。
相比之下,v-if更適合條件不經(jīng)常改變的場景,因?yàn)樗那袚Q開銷相對較大,而v-show適用于頻繁切換條件。
列表渲染指令v-for 基本用法當(dāng)需要將一個數(shù)組遍歷或枚舉一個對象循環(huán)顯示時,就會用到列表渲染指令v-for。它的表達(dá)式需結(jié)合in來使用,類似item in items的形式。
列表渲染也支持用of代替in作為分隔符,它更接近JavaScript迭代器的語法:
v-for的表達(dá)式支持一個可選參數(shù)作為當(dāng)前項(xiàng)的索引。
分隔符in前的語句使用括號,第二項(xiàng)就是books當(dāng)前項(xiàng)的索引。
與v-if一樣,v-for也可以用在內(nèi)置標(biāo)簽上,將多個元素進(jìn)行渲染。
除了數(shù)組外,對象的屬性也是可以遍歷的。
遍歷對象屬性時,有兩個可選參數(shù),分別是鍵名和索引:
- {{index}} - {{key}} - {{value}}
v-for還可以迭代整數(shù):
數(shù)組更新{{n}}
Vue的核心是數(shù)據(jù)與視圖的雙向綁定,包含了一組觀察數(shù)組變化的方法,使用它們改變數(shù)組也會觸發(fā)視圖更新:
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
使用以上方法會改變被這些方法調(diào)用的原始數(shù)組。
以下方法不會改變原數(shù)組:
filter()
concat()
slice()
它們返回的是一個新數(shù)組,在使用這些非變異方法時,可以用新數(shù)組來替換元素組。
Vue在檢測到數(shù)組變化時,并不是直接重新渲染整個列表,而是最大化地復(fù)用DOM元素。替換的數(shù)組中,含有相同元素的項(xiàng)不會被重新渲染,因此可以大膽地用新數(shù)組來替換舊數(shù)組,不用擔(dān)心性能問題。
需要注意的是,以下變動的數(shù)組中,Vue時不能檢測到的,也不會觸發(fā)視圖更新:
通過索引直接設(shè)置項(xiàng),app.books[3]={}
修改數(shù)組長度,app.books.length=1
解決第一個問題可以用兩種方法實(shí)現(xiàn)同樣的效果,第一種是使用Vue內(nèi)置的set方法:
Vue.set(app.books, 3, { name: "《CSS秘密花園》", author: "無名氏" });
如果是在webpack中使用組件化的方式,默認(rèn)是沒有導(dǎo)入Vue的,這時可以使用this.$set。
另一種方法:app.books.splice(3,1,{})
過濾與排序如果不希望改變原數(shù)組,想通過一個數(shù)組的副本來做過濾或排序的顯示時,可以使用計(jì)算屬性返回過濾或排序后的數(shù)組。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/102643.html
摘要:一介紹也稱為,讀音類似,錯誤讀音,由華人尤雨溪開源并維護(hù)。隱藏四事件之前說了一些關(guān)于事件的指令,這里詳細(xì)學(xué)習(xí)一下事件的相關(guān)知識。還有一些其他鍵盤事件,具體參考官方文檔。模板就是,用來進(jìn)行數(shù)據(jù)綁定,顯示在頁面中,也稱為語法。 一、Vue.js介紹 Vue.js也稱為Vue,讀音類似view,錯誤讀音v-u-e,由華人尤雨溪開源并維護(hù)。 Vue有以下特點(diǎn): 是一個構(gòu)建用戶界面的框架 是一...
摘要:一介紹也稱為,讀音類似,錯誤讀音,由華人尤雨溪開源并維護(hù)。隱藏四事件之前說了一些關(guān)于事件的指令,這里詳細(xì)學(xué)習(xí)一下事件的相關(guān)知識。還有一些其他鍵盤事件,具體參考官方文檔。模板就是,用來進(jìn)行數(shù)據(jù)綁定,顯示在頁面中,也稱為語法。 一、Vue.js介紹 Vue.js也稱為Vue,讀音類似view,錯誤讀音v-u-e,由華人尤雨溪開源并維護(hù)。 Vue有以下特點(diǎn): 是一個構(gòu)建用戶界面的框架 是一...
摘要:一介紹也稱為,讀音類似,錯誤讀音,由華人尤雨溪開源并維護(hù)。隱藏四事件之前說了一些關(guān)于事件的指令,這里詳細(xì)學(xué)習(xí)一下事件的相關(guān)知識。還有一些其他鍵盤事件,具體參考官方文檔。模板就是,用來進(jìn)行數(shù)據(jù)綁定,顯示在頁面中,也稱為語法。 一、Vue.js介紹 Vue.js也稱為Vue,讀音類似view,錯誤讀音v-u-e,由華人尤雨溪開源并維護(hù)。 Vue有以下特點(diǎn): 是一個構(gòu)建用戶界面的框架 是一...
摘要:示例了解一門語言,或者學(xué)習(xí)一門新技術(shù),編寫示例是我們的必經(jīng)之路。分割線元素是否渲染在中,取決于前面使用的是還是指令。添加完對象后,重置對象刪一個數(shù)組元素 Vue.js是當(dāng)下很火的一個JavaScript MVVM庫,它是以數(shù)據(jù)驅(qū)動和組件化的思想構(gòu)建的。相比于Angular.js,Vue.js提供了更加簡潔、更易于理解的API,使得我們能夠快速地上手并使用Vue.js。 MVVM模式 下...
摘要:可以在該鉤子中進(jìn)一步地更改狀態(tài),不會觸發(fā)附加的重渲染過程。我工作中只用到,對和不怎么熟與的區(qū)別相同點(diǎn)都支持指令內(nèi)置指令和自定義指令都支持過濾器內(nèi)置過濾器和自定義過濾器都支持雙向數(shù)據(jù)綁定都不支持低端瀏覽器。 看看面試題,只是為了查漏補(bǔ)缺,看看自己那些方面還不懂。切記不要以為背了面試題,就萬事大吉了,最好是理解背后的原理,這樣面試的時候才能侃侃而談。不然,稍微有水平的面試官一看就能看出,是...
閱讀 2045·2021-11-22 09:34
閱讀 3375·2021-09-28 09:35
閱讀 13922·2021-09-09 11:34
閱讀 3695·2019-08-29 16:25
閱讀 2898·2019-08-29 15:23
閱讀 2102·2019-08-28 17:55
閱讀 2497·2019-08-26 17:04
閱讀 3100·2019-08-26 12:21