摘要:使用了基于的模板語(yǔ)法,允許開(kāi)發(fā)者聲明式地將綁定至底層實(shí)例的數(shù)據(jù)。過(guò)濾器還可以串聯(lián),在一個(gè)插值中使用多個(gè)過(guò)濾器。上面代碼插值中使用了兩個(gè)串聯(lián)的過(guò)濾器,過(guò)濾器左至右依次執(zhí)行,先轉(zhuǎn)換成了大寫(xiě),然后再進(jìn)行了反向的操作。
Vue.js 使用了基于 HTML 的模板語(yǔ)法,允許開(kāi)發(fā)者聲明式地將 DOM 綁定至底層 Vue 實(shí)例的數(shù)據(jù)。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循規(guī)范的瀏覽器和 HTML 解析器解析。
1. 插值插值也就是將數(shù)據(jù)插入到html文檔中,包含 文本、html元素、元素屬性等
1.1 文本插值
文本插值中用得最多的就是用雙大括號(hào)的形式。
{{msg}}
上面代碼中的 msg 會(huì)與實(shí)例中的【data】中的屬性綁定在一起,并且數(shù)據(jù)實(shí)現(xiàn)同步,也就是說(shuō)當(dāng)【data】中的值更新之后我們不需要操作html,頁(yè)面中會(huì)自動(dòng)更新數(shù)據(jù)。
我們也可以讓數(shù)據(jù)只綁定一次,在以后更新【data】中的屬性時(shí)不再更新頁(yè)面數(shù)據(jù)
{{msg}}
上面代碼中頁(yè)面只會(huì)呈現(xiàn)“BLUE”,當(dāng)我改變【data】中的 msg 屬性值時(shí),頁(yè)面將不再刷新。
【注意】上面以雙大括號(hào)的形式進(jìn)行的插值都會(huì)被轉(zhuǎn)換成字符串,如果要插入的是html元素,使用下面這樣的方式。
1.2 HTML插值
在 Vue1.0 中HTML插值使用的是三個(gè)大括號(hào)的形式,但是在 Vue2.0 中這樣的形式不能使用了,需要使用 v-html 指令
上面代碼將 msg 屬性值作為html元素插入到了 h1 標(biāo)簽的子節(jié)點(diǎn)中,頁(yè)面呈現(xiàn)如下
【注意】在頁(yè)面上動(dòng)態(tài)的渲染html是一件很危險(xiǎn)的事情,因?yàn)樗苋菀讓?dǎo)致 XSS 攻擊 (跨站腳本攻擊)
1.3 屬性插值
要將屬性綁定到html元素中,使用文本插值的形式是行不通的,但是類(lèi)似 HTML插值,屬性插值也有自己的指令 【v-bind:】
上面代碼使用了【v-bind:】實(shí)現(xiàn)了對(duì)屬性的插值運(yùn)算,最終的結(jié)果也就是 h1 標(biāo)簽中有了一個(gè)id=name,我們幾乎可以對(duì)所有的html屬性按照這樣的方式進(jìn)行插值運(yùn)算。
上面的代碼都會(huì)按照我們的預(yù)期進(jìn)行頁(yè)面渲染。
【提示】由于我們對(duì)屬性的插值使用得相當(dāng)?shù)亩啵訴ue考慮到了書(shū)寫(xiě)的方便,為我們提供了簡(jiǎn)寫(xiě)形式,也就是直接只寫(xiě)一個(gè)冒號(hào) 【:】進(jìn)行插值運(yùn)算
上面這段代碼和之前使用的【v-bind:】的運(yùn)行結(jié)果是一樣的。
1.4 插值中使用Javascript表達(dá)式
插值運(yùn)算如果只是進(jìn)行值的插入那我們就想得太簡(jiǎn)單了,在插值運(yùn)算中我們還可以應(yīng)用Javascript表達(dá)式對(duì)插入的值進(jìn)行處理。
{{name.toUpperCase()}}
上面代碼在插值中使用Javascript表達(dá)式對(duì)插值進(jìn)行了處理。
【注意】這里運(yùn)用的只能是單個(gè)表達(dá)式或者鏈?zhǔn)秸{(diào)用,但是不能是語(yǔ)句
{{var a=1}}
上面代碼是會(huì)報(bào)錯(cuò)的,因?yàn)椴逯抵惺褂玫氖钦Z(yǔ)句,而不是表達(dá)式。
2. 指令指令其實(shí)在上面我們已經(jīng)使用過(guò)了【v-bind:】和【v-html】,指令就是值這些帶有 v- 前綴的特殊屬性。指令屬性的值預(yù)期是單一 JavaScript 表達(dá)式(除了 v-for)。指令的職責(zé)就是當(dāng)其表達(dá)式的值改變時(shí)相應(yīng)地將某些行為應(yīng)用到 DOM 上。
2.1 指令參數(shù)
一些指令時(shí)能夠接收參數(shù)的,比如我們用于屬性綁定的【v-bind】
上面代碼中 id 就是 v-bind 指令的參數(shù),告知v-bind指令將id 和 did 的值綁定到一起。
2.2 修飾符
修飾符(Modifiers)是以半角句號(hào) . 指明的特殊后綴,用于指出一個(gè)指令應(yīng)該以特殊方式綁定。例如,.prevent 修飾符告訴 v-on 指令對(duì)于觸發(fā)的事件調(diào)用 event.preventDefault():
關(guān)于【v-on】指令,待會(huì)兒再說(shuō)。
3. 過(guò)濾器我們知道可以在插值運(yùn)算中使用表達(dá)式,但是表達(dá)式能力畢竟有限,有時(shí)我們需要對(duì)插值進(jìn)行更復(fù)雜的處理之后呈現(xiàn)在html中,那么我們就需要使用到過(guò)濾器了。
過(guò)濾器有兩個(gè)使用的地放【插值】和【v-bind】中
{{name | myfilter}}
上面代碼中定義了一個(gè)myfilter的過(guò)濾器,將值進(jìn)行反轉(zhuǎn)輸出。
在構(gòu)造函數(shù) Vue 的參數(shù)對(duì)象中有一個(gè)【filters】屬性,該屬性是一個(gè)對(duì)象,對(duì)象中以方法的形式定義過(guò)濾器,方法名也就是過(guò)濾器名稱(chēng),方法的參數(shù)也就是插值的值,在過(guò)濾器中隊(duì)值進(jìn)行處理后返回。
過(guò)濾器還可以串聯(lián),在一個(gè)插值中使用多個(gè)過(guò)濾器。
{{name | touppercase | myfilter}}
上面代碼插值中使用了兩個(gè)串聯(lián)的過(guò)濾器,過(guò)濾器左至右依次執(zhí)行,先轉(zhuǎn)換成了大寫(xiě),然后再進(jìn)行了反向的操作。
4. 插值事件綁定上面我們提到可以使用指令的方式綁定屬性,其實(shí)事件我們也可以通過(guò)一個(gè)特殊的指令進(jìn)行綁定,這個(gè)指令就是【v-on】,他和原生Javascript的事件前綴 on 是一個(gè)意思。
原生Javascript中的所有事件都可以通過(guò)這樣的方式進(jìn)行綁定,由于【v-on】的使用頻率非常高,所以Vue為我們提供了簡(jiǎn)寫(xiě)形式,用【@】代替【v-on】,于是下面代碼和上面一段代碼是等效的。
上面代碼也就是使用了簡(jiǎn)寫(xiě)【@】進(jìn)行事件綁定,建議使用簡(jiǎn)寫(xiě)的形式,提高開(kāi)發(fā)效率。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/84637.html
摘要:轉(zhuǎn)換成為模板函數(shù)聯(lián)系上一篇文章,其實(shí)模板函數(shù)的構(gòu)造都大同小異,基本是都是通過(guò)拼接函數(shù)字符串,然后通過(guò)對(duì)象轉(zhuǎn)換成一個(gè)函數(shù),變成一個(gè)函數(shù)之后,只要傳入對(duì)應(yīng)的數(shù)據(jù),函數(shù)就會(huì)返回一個(gè)模板數(shù)據(jù)渲染好的字符串。 教程目錄1.手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的 VUE2.手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的 VUE--模板篇 Hello,我又回來(lái)了,上一次的文章教會(huì)了大家如何書(shū)寫(xiě)一個(gè)簡(jiǎn)單 VUE,里面實(shí)現(xiàn)了VUE 的...
摘要:下面是我這半年以來(lái)總結(jié)的學(xué)習(xí)筆記,幫助自己復(fù)習(xí)學(xué)習(xí)的基本用法。全局子組件的注冊(cè)與屬性傳遞我是個(gè)全局子組件用這種數(shù)據(jù)格式來(lái)定義接受的屬性名稱(chēng)這樣在調(diào)用時(shí)候就可以傳遞屬性進(jìn)去今天的筆記學(xué)習(xí)心得就記錄到這里吧第一次用順利 下面是我這半年以來(lái)總結(jié)的Vue學(xué)習(xí)筆記,幫助自己復(fù)習(xí)學(xué)習(xí)Vue的基本用法。有需要的同志可以參考下。 Vue的模板語(yǔ)法 Vue有很簡(jiǎn)單的模板語(yǔ)法,這些Vue指令用來(lái)響應(yīng)式改變...
摘要:本系列是一個(gè)教程,下面貼下目錄手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的模板篇今天給大家?guī)?lái)的是實(shí)現(xiàn)一個(gè)簡(jiǎn)單的類(lèi)似一樣的前端框架,框架現(xiàn)在應(yīng)該算是非常主流的前端數(shù)據(jù)驅(qū)動(dòng)框架,今天我們來(lái)從零開(kāi)始寫(xiě)一個(gè)非常簡(jiǎn)單的框架,主要是讓大家 本系列是一個(gè)教程,下面貼下目錄~1.手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的 VUE2.手把手教你從零寫(xiě)一個(gè)簡(jiǎn)單的 VUE--模板篇 今天給大家?guī)?lái)的是實(shí)現(xiàn)一個(gè)簡(jiǎn)單...
摘要:然而,不同的是計(jì)算屬性是基于它們的依賴(lài)進(jìn)行緩存的。計(jì)算屬性只有在它的相關(guān)依賴(lài)發(fā)生改變時(shí)才會(huì)重新求值。這就意味著只要還沒(méi)有發(fā)生改變,多次訪問(wèn)計(jì)算屬性會(huì)立即返回之前的計(jì)算結(jié)果,而不必再次執(zhí)行函數(shù)。這是計(jì)算屬性無(wú)法做到的。 Vue實(shí)例 構(gòu)造器 每個(gè) Vue.js 應(yīng)用都是通過(guò)構(gòu)造函數(shù) Vue 創(chuàng)建一個(gè) Vue 的根實(shí)例 啟動(dòng)的: var vm=new Vue({ //...
閱讀 2376·2021-09-30 09:47
閱讀 1367·2021-09-28 09:35
閱讀 3237·2021-09-22 15:57
閱讀 2485·2021-09-22 14:59
閱讀 3634·2021-09-07 10:25
閱讀 3069·2021-09-03 10:48
閱讀 3035·2021-08-26 14:14
閱讀 933·2019-08-30 15:55