1. 程式人生 > >Vue語法筆記

Vue語法筆記

方式 ins 初始 自定義 some del else 解釋 一次

選一個工作空間,新建一個vue項目:
$ vue init webpack vuedemo
$ cd vuedemo
$ npm install
運行項目:
$ npm run dev
在終端裏面輸入
cd dist
http-server -p 3000


Vue.js 的核心是一個允許采用簡潔的模板語法來聲明式的將數據渲染進 DOM:

v-on 指令綁定一個事件監聽器 縮寫【:】 v-on:click

用戶輸入,綁定數據:
v-model 指令,它能輕松實現表單輸入和應用狀態之間的雙向綁定。
綁定 DOM 元素屬性:
v-bind 縮寫:【@】
V-bind:title
v-bind:style
v-bind:href
v-bind:class
對象: v-bind:class="{ active: isActive, ‘text-dange r‘: hasError }">
數組:<div v-bind:class="[activeClass, errorClass]">
Mustache 語法

(雙大括號),雙大括號會將數據解釋為純文本,當數據改變時,插值處的內容會更新。
v-once 指令,你也能執行一次性地插值,當數據改變時,插值處的內容不會更新。
v-html 指令 為了輸出真正的 HTML
v-text 會把所有的內容當成字符串給直接輸出出來。


邏輯流轉:
v-if 條件
v-else 元素必須緊跟在 v-if 或者 v-else-if 元素的後面
v-show 根據條件展示元素的選項是,元素總是會被渲染,並且只是簡單地基於 CSS 進行切換。
v-if vs v-show
註:v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運行時條件不太可能改變,則使用 v-if 較好。
v-for 循環
v-for 具有比 v-if 更高的優先級。

修飾符

(Modifiers)是以半角句號 . 指明的特殊後綴,用於指出一個指令應該以特殊方式綁定。
過濾器可以用在兩個地方:mustache 插值和 v-bind 表達式。


組件: 非常類似於自定義元素——它是 Web 組件規範的一部分
Vue.component(‘todo-item‘, {
props: [‘todo‘],
template: ‘<li>{{ todo.text }}</li>‘
})

比較:
計算屬性 vs Methods
不同的是計算屬性是基於它們的依賴進行緩存的。計算屬性只有在它的相關依賴發生改變時才會重新求值。 如果你不希望有緩存,請用 method 替代。

計算屬性 vs Watched 屬性
你有一些數據需要隨著其它數據變動而變動時,然而,通常更好的想法是使用 computed 屬性而不是命令式的 watch 回調。
當你想要在數據變化響應時,執行異步操作或開銷較大的操作,需要一個自定義的 watcher

計算屬性默認只有 getter ,不過在需要時你也可以提供一個 setter :



<router-link :to="‘/content/‘ + i.id">
註:router-link 是 VueRouter2 “聲明式導航”的寫法,在實際轉換為 html 標簽的時候,會轉化為 <a></a>,裏面的 to 屬性,就相當於 a 的 href 屬性。

屬性必須在 data 對象上:
Vue 不能檢測到對象屬性的添加或刪除。由於 Vue 會在初始化實例時對屬性執行 getter/setter 轉化過程,所以屬性必須在 data 對象上存在才能讓 Vue 轉換它,這樣才能讓它是響應的。
Vue 不允許動態添加根級響應式屬性:
Vue.set(object, key, value) 方法將響應屬性添加到嵌套的對象上
Vue.$set(object, key, value)
也使用 Object.assign() 或 _.extend() 方法來添加屬性。但是,添加到對象上的新屬性不會觸發更新。可以創建一個新的對象,讓它包含原對象的屬性和新的屬性;
例: this.someObject = Object.assign({}, this.someObject, { a: 1, b: 2 })

Vue語法筆記