日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

Vue.js 模板语法

發(fā)布時間:2025/3/21 vue 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vue.js 模板语法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

模板語法

Vue.js 使用了基于 HTML 的模板語法,允許開發(fā)者聲明式地將 DOM 綁定至底層 Vue 實(shí)例的數(shù)據(jù)。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循規(guī)范的瀏覽器和 HTML 解析器解析。

在底層的實(shí)現(xiàn)上,Vue 將模板編譯成虛擬 DOM 渲染函數(shù)。結(jié)合響應(yīng)系統(tǒng),Vue 能夠智能地計算出最少需要重新渲染多少組件,并把 DOM 操作次數(shù)減到最少。

如果你熟悉虛擬 DOM 并且偏愛 JavaScript 的原始力量,你也可以不用模板,直接寫渲染 (render) 函數(shù),使用可選的 JSX 語法。

插值

文本

數(shù)據(jù)綁定最常見的形式就是使用“Mustache”語法 (雙大括號) 的文本插值:

<span>Message: {{ msg }}</span>

Mustache 標(biāo)簽將會被替代為對應(yīng)數(shù)據(jù)對象上?msg?屬性的值。無論何時,綁定的數(shù)據(jù)對象上?msg?屬性發(fā)生了改變,插值處的內(nèi)容都會更新。

通過使用?v-once 指令,你也能執(zhí)行一次性地插值,當(dāng)數(shù)據(jù)改變時,插值處的內(nèi)容不會更新。但請留心這會影響到該節(jié)點(diǎn)上的其它數(shù)據(jù)綁定:

<span v-once>這個將不會改變: {{ msg }}</span>

原始 HTML

雙大括號會將數(shù)據(jù)解釋為普通文本,而非 HTML 代碼。為了輸出真正的 HTML,你需要使用?v-html?指令:

<p>Using mustaches: {{ rawHtml }}</p> <p>Using v-html directive: <span v-html="rawHtml"></span></p>

Using mustaches: <span style="color: red">This should be red.</span>

Using v-html directive:?This should be red.

這個?span?的內(nèi)容將會被替換成為屬性值?rawHtml,直接作為 HTML——會忽略解析屬性值中的數(shù)據(jù)綁定。注意,你不能使用?v-html?來復(fù)合局部模板,因為 Vue 不是基于字符串的模板引擎。反之,對于用戶界面 (UI),組件更適合作為可重用和可組合的基本單位。

你的站點(diǎn)上動態(tài)渲染的任意 HTML 可能會非常危險,因為它很容易導(dǎo)致?XSS 攻擊。請只對可信內(nèi)容使用 HTML 插值,絕不要對用戶提供的內(nèi)容使用插值。

特性

Mustache 語法不能作用在 HTML 特性上,遇到這種情況應(yīng)該使用?v-bind 指令:

<div v-bind:id="dynamicId"></div>

在布爾特性的情況下,它們的存在即暗示為?true,v-bind?工作起來略有不同,在這個例子中:

<button v-bind:disabled="isButtonDisabled">Button</button>

如果?isButtonDisabled?的值是?null、undefined?或?false,則?disabled?特性甚至不會被包含在渲染出來的?<button>?元素中。

使用 JavaScript 表達(dá)式

迄今為止,在我們的模板中,我們一直都只綁定簡單的屬性鍵值。但實(shí)際上,對于所有的數(shù)據(jù)綁定,Vue.js 都提供了完全的 JavaScript 表達(dá)式支持。

{{ number + 1 }}{{ ok ? 'YES' : 'NO' }}{{ message.split('').reverse().join('') }}<div v-bind:id="'list-' + id"></div>

這些表達(dá)式會在所屬 Vue 實(shí)例的數(shù)據(jù)作用域下作為 JavaScript 被解析。有個限制就是,每個綁定都只能包含單個表達(dá)式,所以下面的例子都不會生效。

<!-- 這是語句,不是表達(dá)式 --> {{ var a = 1 }}<!-- 流控制也不會生效,請使用三元表達(dá)式 --> {{ if (ok) { return message } }}

模板表達(dá)式都被放在沙盒中,只能訪問全局變量的一個白名單,如?Math?和?Date?。你不應(yīng)該在模板表達(dá)式中試圖訪問用戶定義的全局變量。

指令

指令 (Directives) 是帶有?v-?前綴的特殊特性。指令特性的值預(yù)期是單個 JavaScript 表達(dá)式?(v-for?是例外情況,稍后我們再討論)。指令的職責(zé)是,當(dāng)表達(dá)式的值改變時,將其產(chǎn)生的連帶影響,響應(yīng)式地作用于 DOM。回顧我們在介紹中看到的例子:

<p v-if="seen">現(xiàn)在你看到我了</p>

這里,v-if?指令將根據(jù)表達(dá)式?seen?的值的真假來插入/移除?<p>?元素。

參數(shù)

一些指令能夠接收一個“參數(shù)”,在指令名稱之后以冒號表示。例如,v-bind?指令可以用于響應(yīng)式地更新 HTML 特性:

<a v-bind:href="url">...</a>

在這里?href?是參數(shù),告知?v-bind?指令將該元素的?href?特性與表達(dá)式?url?的值綁定。

另一個例子是?v-on?指令,它用于監(jiān)聽 DOM 事件:

<a v-on:click="doSomething">...</a>

在這里參數(shù)是監(jiān)聽的事件名。我們也會更詳細(xì)地討論事件處理。

修飾符

修飾符 (Modifiers) 是以半角句號?.?指明的特殊后綴,用于指出一個指令應(yīng)該以特殊方式綁定。例如,.prevent?修飾符告訴?v-on?指令對于觸發(fā)的事件調(diào)用?event.preventDefault():

<form v-on:submit.prevent="onSubmit">...</form>

在接下來對?v-on?和?v-for?等功能的探索中,你會看到修飾符的其它例子。

縮寫

v-?前綴作為一種視覺提示,用來識別模板中 Vue 特定的特性。當(dāng)你在使用 Vue.js 為現(xiàn)有標(biāo)簽添加動態(tài)行為 (dynamic behavior) 時,v-?前綴很有幫助,然而,對于一些頻繁用到的指令來說,就會感到使用繁瑣。同時,在構(gòu)建由 Vue.js 管理所有模板的單頁面應(yīng)用程序 (SPA - single page application)?時,v-?前綴也變得沒那么重要了。因此,Vue.js 為?v-bind?和?v-on?這兩個最常用的指令,提供了特定簡寫:

v-bind?縮寫

<!-- 完整語法 --> <a v-bind:href="url">...</a><!-- 縮寫 --> <a :href="url">...</a>

v-on?縮寫

<!-- 完整語法 --> <a v-on:click="doSomething">...</a><!-- 縮寫 --> <a @click="doSomething">...</a>

它們看起來可能與普通的 HTML 略有不同,但?:?與?@?對于特性名來說都是合法字符,在所有支持 Vue.js 的瀏覽器都能被正確地解析。而且,它們不會出現(xiàn)在最終渲染的標(biāo)記中??s寫語法是完全可選的,但隨著你更深入地了解它們的作用,你會慶幸擁有它們。

from:?https://cn.vuejs.org/v2/guide/syntax.html

總結(jié)

以上是生活随笔為你收集整理的Vue.js 模板语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。