Vue.js學習筆記(參考官網)

起步:html

兼容性:vue

Vue.js 不支持 IE8 及其如下版本,由於 Vue.js 使用了 IE8 不能實現的 ECMAScript 5 特性。 Vue.js 支持全部兼容 ECMAScript 5 的瀏覽器。web

雙向綁定:
api

 

渲染列表:數組

 

概述瀏覽器

Vue.js(讀音 /vjuː/, 相似於 view)是一個構建數據驅動的 web 界面的庫。Vue.js 的目標是經過儘量簡單的 API 實現響應的數據綁定組合的視圖組件框架

ue.js 自身不是一個全能框架——它只聚焦於視圖層。在與相關工具和支持庫一塊兒使用時,Vue.js 也能完美地驅動複雜的單頁應用。工具

 

響應的數據綁定this

Vue.js 的核心是一個響應的數據綁定系統,它讓數據與 DOM 保持同步很是簡單。Vue.js 擁抱數據驅動的視圖概 念。通俗地講,它意味着咱們在普通 HTML 模板中使用特殊的語法將 DOM 「綁定」到底層數據。一旦建立了綁定,DOM 將與數據保持同步。url

Vue實例

構造器:一個 Vue 實例其實正是一個 MVVM 模式中所描述的 ViewModel - 所以在文檔中常常會使用 vm 這個變量名。

在實例化 Vue 時,須要傳入一個選項對象,它能夠包含數據、模板、掛載元素、方法、生命週期鉤子等選項。所有的選項能夠在 API 文檔中查看。

能夠擴展 Vue 構造器,從而用預約義選項建立可複用的組件構造器

全部的 Vue.js 組件其實都是被擴展的 Vue 實例。

 

屬性與方法:

實例生命週期:

Vue 實例在建立時有一系列初始化步驟——例如,它須要創建數據觀察,編譯模板,建立必要的數據綁定。在此過程當中,它也將調用一些生命週期鉤子,給自定義邏輯提供運行機會。例如 created 鉤子在實例建立後調用:

生命週期圖示:

Lifecycle

數據綁定語法:

Vue.js 的模板是基於 DOM 實現的。這意味着全部的 Vue.js 模板都是可解析的有效的 HTML,且經過一些特殊的特性作了加強。

綁定表達式:過濾器:

指令:

指令 (Directives) 是特殊的帶有前綴 v- 的特性。指令的值限定爲綁定表達式,所以上面提到的 JavaScript 表達式及過濾器規則在這裏也適用。指令的職責就是當其表達式的值改變時把某些特殊的行爲應用到 DOM 上。

參數:v-bind 指令用於響應地更新 HTML 特性:

這裏 href 是參數,它告訴 v-bind 指令將元素的 href 特性跟表達式 url 的值綁定。

另外一個例子是 v-on 指令,它用於監聽 DOM 事件:

縮寫:

v-bind:

v-on縮寫:

 

計算屬性:

在模板中綁定表達式是很是便利的,可是它們實際上只用於簡單的操做。若是須要多於一個表達式的邏輯,應當使用計算屬性

 

計算屬性 vs $watch(貌似差很少)

計算setter:

 

Class與style綁定

綁定html Class:

對象語法:

咱們能夠傳給 v-bind:class 一個對象,以動態地切換 class。注意 v-bind:class 指令能夠與普通的 class 特性共存:

數組語法:

咱們能夠把一個數組傳給 v-bind:class,以應用一個 class 列表:

 

綁定內聯樣式:

對象語法/數組語法

 

條件渲染:

v-if:若是條件爲true元素顯示

v-show:

  和v-if類似,不一樣的是有 v-show 的元素會始終渲染並保持在 DOM 中。v-show 是簡單的切換元素的 CSS 屬性 display

 

v-if VS v-show

通常來講,v-if 有更高的切換消耗而 v-show 有更高的初始渲染消耗。所以,若是須要頻繁切換 v-show 較好,若是在運行時條件不大可能改變 v-if 較好。

 

列表渲染:

v-for:可使用 v-for 指令基於一個數組渲染一個列表。這個指令使用特殊的語法,形式爲 item in itemsitems 是數據數組,item 是當前數組元素的別名

 

v-for 塊內咱們能徹底訪問父組件做用域內的屬性,另有一個特殊變量 $index,正如你猜到的,它是當前數組元素的索引。

 

數組變更檢測:

變異方法:

  push()
   pop()
   shift()
   unshift()
   splice()
   sort()
   reverse()

替換數組:

filter()
concat()
slice()

 

對象v-for:

也可使用 v-for 遍歷對象。除了 $index 以外,做用域內還能夠訪問另一個特殊變量 $key

 

方法與事件處理器:

方法處理器:跳過。。

內聯語句處理器:

事件修飾符:

鍵盤事件:。。。

 

表單控件綁定

基本用法:

  能夠用 v-model 指令在表單控件元素上建立雙向數據綁定。根據控件類型它自動選取正確的方法更新元素。

Text。。。

Mutiline text。。。。

Checkbox。。。

Radio。。。

Select。。。

 

過渡:

。。。。。。

 

組件:

註冊:

以前說過,咱們能夠用 Vue.extend() 建立一個組件構造器:

要把這個構造器用做組件,須要用 Vue.component(tag, constructor) 註冊

註冊語法糖:

爲了讓事件更簡單,能夠直接傳入選項對象而不是構造器給 Vue.component()component 選項。Vue.js 在背後自動調用 Vue.extend()

組件選項問題:

Props:

組件實例的做用域是孤立的。這意味着不能而且不該該在子組件的模板內直接引用父組件的數據。可使用 props 把數據傳給子組件。

prop 默認是單向綁定:當父組件的屬性變化時,將傳導給子組件,可是反過來不會。

動態Props:

 

父子組件通訊:

子組件能夠用 this.$parent 訪問它的父組件。根實例的後代能夠用 this.$root 訪問它。父組件有一個數組 this.$children,包含它全部的子元素。

儘管能夠訪問父鏈上任意的實例,不過子組件應當避免直接依賴父組件的數據,儘可能顯式地使用 props 傳遞數據。另外,在子組件中修改父組件的狀態是很是糟糕的作法,由於:

  1. 這讓父組件與子組件緊密地耦合;

  2. 只看父組件,很難理解父組件的狀態。由於它可能被任意子組件修改!理想狀況下,只有組件本身能修改它的狀態。

自定義事件:

Vue 實例實現了一個自定義事件接口,用於在組件樹中通訊。這個事件系統獨立於原生 DOM 事件,用法也不一樣。

每一個 Vue 實例都是一個事件觸發器:

  • 使用 $on() 監聽事件;

  • 使用 $emit() 在它上面觸發事件;

  • 使用 $dispatch() 派發事件,事件沿着父鏈冒泡;

  • 使用 $broadcast() 廣播事件,事件向下傳導給全部的後代。

不一樣於 DOM 事件,Vue 事件在冒泡過程當中第一次觸發回調以後自動中止冒泡,除非回調明確返回 true

 

 子組建索引:

 儘管有 props 和 events,可是有時仍然須要在 JavaScript 中直接訪問子組件。爲此可使用 v-ref 爲子組件指定一個索引 ID。例如:

v-refv-for 一塊兒用時,ref 是一個數組或對象,包含相應的子組件。

 

使用Slot分發內容:

。。。

相關文章
相關標籤/搜索