新詞匯:“Mustache”語法 (雙大括號)
"truthy" 在 JavaScript 中,truthy(真值)指的是在布爾值上下文中,轉換后的值為真的值。所有值都是真值,除非它們被定義為 假值(即除 false
、0
、""
、null
、undefined
和 NaN
以外皆為真值)。
1. Vue 實例自帶的屬性都有前綴 $
,以便於區分用戶定義的屬性
2. 常會使用 vm (ViewModel 的縮寫) 這個變量名表示 Vue 實例
3. Vue是響應式的,當屬性值改變,視圖會響應,當使用Object.freeze()
,會阻止修改現有的屬性,也意味着響應系統無法再追蹤變化。
4. ☆ 生命周期(在項目中,慢慢理解其用處)
注意點:this的指向問題,生命周期鈎子的this上下文指向調用它的 Vue 實例,官網參考↑:
5. v-once指令,你也能執行一次性地插值,當數據改變時,插值處的內容不會更新。但請留心這會影響到該節點上的其它數據綁定
6. v-html指令,雙大括號會將數據解釋為普通文本,而非 HTML 代碼。為了輸出真正的 HTML使用v-html,但不可濫用
如何避免XSS攻擊?
7. 計算屬性 computed (不太會用!)
計算屬性默認只有 getter ,不過在需要時你也可以提供一個 setter
8. 偵聽器 watch
9. key 管理可復用的元素
Vue 為你提供了一種方式來表達“這兩個元素是完全獨立的,不要復用它們”。只需添加一個具有唯一值的
key
屬性即可
10. v-show
帶有 v-show
的元素始終會被渲染並保留在 DOM 中。v-show
只是簡單地切換元素的 CSS 屬性 display
。
注意,v-show
不支持 <template>
元素,也不支持 v-else
。
11. v-for 里面可使用對象,可使用數組,也可使用方法
在遍歷對象時,會按 Object.keys()
的結果遍歷,但是不能保證它的結果在不同的 JavaScript 引擎下都一致。
遍歷對象是可提供三個參數,例如:
<div v-for="(value, name, index) in object"> {{ index }}. {{ name }}: {{ value }} </div>
12. 數組變更
變異方法:會改變調用了這些方法的原始數組
非變異方法:它們不會改變原始數組,而總是返回一個新數組
由於 JavaScript 的限制,Vue 不能檢測以下數組的變動:
1.當你利用索引直接設置一個數組項時,例如:vm.items[indexOfItem] = newValue
2.當你修改數組的長度時,例如:vm.items.length = newLength
解決:1. vm.$set(vm.items, indexOfItem, newValue)
2. vm.items.splice(newLength)
13. 對象變更
由於 JavaScript 的限制,Vue 不能檢測對象屬性的添加或刪除
對於已經創建的實例,Vue 不允許動態添加根級別的響應式屬性。但是,可以使用 Vue.set(object, propertyName, value)
方法向嵌套對象添加響應式屬性。
例如:vm.$set(vm.userProfile, 'age', 27)
有時你可能需要為已有對象賦值多個新屬性,比如使用 Object.assign()
或 _.extend()
。在這種情況下,你應該用兩個對象的屬性創建一個新的對象。
例如:vm.userProfile = Object.assign({}, vm.userProfile, { age: 27, favoriteColor: 'Vue Green' })
14. .filter方法(不常用),常用來過濾數組
有時,我們想要顯示一個數組經過過濾或排序后的版本,而不實際改變或重置原始數據。在這種情況下,可以創建一個計算屬性,來返回過濾或排序后的數組。
下面這個官網的例子,沒有接觸過,值得借鑒!↓
15. 方法內參數可有兩個,可有$event (這個方法沒怎么用過)