一個 Vue 應(yīng)用由一個通過 new Vue 創(chuàng)建的根 Vue 實例亲铡,以及可選的嵌套的才写、可復(fù)用的組件樹組成劳曹。
所有的 Vue 組件都是 Vue 實例,并且接受相同的選項對象 (一些根實例特有的選項除外)琅摩。
指令:職責(zé)是铁孵,當(dāng)表達(dá)式的值改變時,將其產(chǎn)生的連帶影響房资,響應(yīng)式地作用于 DOM
以下是某些vue和angular指令的對比:
指令帶有前綴 v-蜕劝,以表示它們是 Vue 提供的特殊 attribute。
v-bind:title= | [title]=
v-if= | *ngIf=
v-show | [hidden]=
v-for= | *ngFor=
v-on:click= | (click)=
v-model= | [(ngModel)]=
更多API詳見https://cn.vuejs.org/v2/api/
- 雙向綁定:只有當(dāng)實例被創(chuàng)建時就已經(jīng)存在于 data 中的 property 才是響應(yīng)式的轰异。
- 生命周期:生命周期鉤子的 this 上下文指向調(diào)用它的 Vue 實例岖沛。
- 插值: 數(shù)據(jù)綁定最常見的形式就是使用“Mustache”語法 (雙大括號) 的文本插值;Mustache 語法不能作用在 HTML attribute 上搭独,遇到這種情況應(yīng)該使用
v-bind
指令婴削。 -
v-bind:
縮寫:
,v-on:
縮寫@
牙肝,v-slot:
替換為字符#
唉俗。 - 計算屬性
computed
和偵聽屬性watch
:當(dāng)數(shù)據(jù)需要隨著其它數(shù)據(jù)變動而變動時,computed
更有用配椭;當(dāng)需要在數(shù)據(jù)變化時執(zhí)行異步或開銷較大的操作時虫溜,watch
更有用。 - 不推薦同時使用 v-if 和 v-for股缸。當(dāng) v-if 與 v-for 一起使用時衡楞,v-for 具有比 v-if 更高的優(yōu)先級。
-
<template>
元素當(dāng)做不可見的包裹元素敦姻,類似ng
的<ng-container>
瘾境,而不是<ng-template>
;類似react
的<React.Fragment></React.Fragment>
(簡寫<></>
)镰惦。 -
<ul><li is="todo-item" attribute
中的is="todo-item"
實現(xiàn)的效果與<todo-item>
相同迷守,但是可以避開一些潛在的瀏覽器解析錯誤,因為在 <ul> 元素內(nèi)只有 <li> 元素會被看作有效內(nèi)容陨献。 - 更新使用
v-for
渲染的元素列表時為每項提供一個唯一key
attribute盒犹,類似于react
中的key
。 - 對于單選按鈕眨业,復(fù)選框及選擇框的選項急膀,v-model 綁定的值通常是靜態(tài)字符串 (對于復(fù)選框也可以是布爾值)。
- 因為組件是可復(fù)用的 Vue 實例龄捡,所以它們與 new Vue 接收相同的選項卓嫂,例如 data、computed聘殖、watch晨雳、methods 以及生命周期鉤子等行瑞。僅有的例外是像 el 這樣根實例特有的選項。
- 組件的 data 選項必須是一個函數(shù)餐禁;根實例的data是一個對象血久。
- 監(jiān)聽子組件事件:
$emit
。 - 插槽:
<slot></slot>
帮非,類似于angular
的<ng-content></ng-content>
氧吐。vue,react末盔,angular插槽使用比較筑舅。 - 動態(tài)組件:通過 Vue 的
<component>
元素加一個特殊的is
attribute 來實現(xiàn)。 - 使用 DOM 中的模板時陨舱,camelCase (駝峰命名法) 的 prop 名需要使用其等價的 kebab-case (短橫線分隔命名) 命名翠拣。
- 推薦始終使用 kebab-case 的事件名。
- 在大型應(yīng)用中游盲,我們可能需要將應(yīng)用分割成小一些的代碼塊误墓,并且只在需要的時候才從服務(wù)器加載一個模塊。為了簡化背桐,Vue 允許你以一個工廠函數(shù)的方式定義你的組件优烧,這個工廠函數(shù)會異步解析你的組件定義蝉揍。Vue 只有在這個組件需要被渲染的時候才會觸發(fā)該工廠函數(shù)链峭,且會把結(jié)果緩存起來供未來重渲染。
-
$forceUpdate()
類似react
中的forceUpdate()
又沾。 - 單文件組件: 模版弊仪、腳本、樣式寫在一個
.vue
文件中杖刷。 - 不論使用模板還是渲染函數(shù)励饵,內(nèi)容都會被自動轉(zhuǎn)義,因此避免了腳本注入滑燃。
- Vue 在更新 DOM 時是異步執(zhí)行的役听。
- Object.defineProperty 是 ES5 中一個無法 shim 的特性,這也就是 Vue 不支持 IE8 以及更低版本瀏覽器的原因表窘。
-
vue
的過濾器filter
類似angular
中的管道pipe
典予。過濾器可以用在兩個地方:雙花括號插值和 v-bind 表達(dá)式。 - 插件通常用來為
Vue
添加全局功能乐严。 - 混入 (
mixin
) 用來分發(fā) Vue 組件中的可復(fù)用功能瘤袖。