1. 程式人生 > 實用技巧 >vue學習6

vue學習6

模板語法

Vue.js 使用了基於 HTML 的模板語法,允許開發者宣告式地將 DOM 繫結至底層 Vue 例項的資料。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循規範的瀏覽器和 HTML 解析器解析。

在底層的實現上,Vue 將模板編譯成虛擬 DOM 渲染函式。結合響應系統,Vue 能夠智慧地計算出最少需要重新渲染多少元件,並把 DOM 操作次數減到最少。

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

模板語法

Vue.js 使用了基於 HTML 的模板語法,允許開發者宣告式地將 DOM 繫結至底層 Vue 例項的資料。所有 Vue.js 的模板都是合法的 HTML,所以能被遵循規範的瀏覽器和 HTML 解析器解析。

在底層的實現上,Vue 將模板編譯成虛擬 DOM 渲染函式。結合響應系統,Vue 能夠智慧地計算出最少需要重新渲染多少元件,並把 DOM 操作次數減到最少。

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

1.文字插值

  資料繫結最常見的形式就是使用“Mustache”語法 (雙大括號) 的文字插值:

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

  Mustache 標籤將會被替代為對應資料物件上 msgproperty 的值。無論何時,繫結的資料物件上 msgproperty 發生了改變,插值處的內容都會更新。

通過使用v-once指令,你也能執行一次性地插值,當資料改變時,插值處的內容不會更新。

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

需要注意的是,這會影響到該節點上的其它資料繫結:

2.原始HTML

  雙大括號會將資料解釋為普通文字,而非 HTML 程式碼。為了輸出真正的 HTML,需要使用v-html指令:

        <div id="app-9">
            <span>Message : {{ msg }}</span>
            <p>Using mustaches: {{ rawHtml }}</p>
            <p>Using v-html directive: <span v-html="rawHtml"></span></p>
        </div>
var app9 = new Vue({
    el: "#app-9",
    data:{
        msg: "hello vue -9",
        rawHtml: '<span style="color:red">this is should be red</span>'
    }
})

站點上動態渲染的任意 HTML 可能會非常危險,因為它很容易導致XSS 攻擊。

請只對可信內容使用 HTML 插值,絕不要對使用者提供的內容使用插值。

3.Attribute

Mustache 語法不能作用在 HTML attribute 上,遇到這種情況應該使用v-bind指令:

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

V-bind:標籤的某一個屬性=“ 值 ”

對於布林 attribute (它們只要存在就意味著值為true),v-bind工作起來略有不同,在這個例子中:

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

如果isButtonDisabled的值是nullundefinedfalse,則disabledattribute 甚至不會被包含在渲染出來的<button>元素中。

如:

<div v-bind:class="color">這裡是class屬性color的值結果顯示</div>
var app9 = new Vue({
    el: "#app-9",
    data:{
        color: 'red'
    }
})