一、 Vue.js是什么
Vue.js是一套構建用戶界面(view)的MVVM框架。Vue.js的核心庫只關注視圖層,並且非常容易學習,非常容易與其他庫或已有的項目整合。
1.1 Vue.js的目的
Vue.js的產生核心是為了解決如下三個問題:
- 解決數據綁定的問題;
- Vue.js框架生產的主要目的是為了開發大興單頁面應用(SPA:Single Page Application)
Angular.js中對PC端支持的比較良好,但是對移動端支持就一般。而Vue.js主要支持移動端,也支持PC端。
3. 它還支持組件化。也就是可以將頁面封裝成若干個組件,采用積木式編程 ,這樣是頁面的復用度達到最高(支持組件化)。
1.2 Vue.js特性
- MVVM模式
M: model 業務模型,用處:處理數據,提供數據
V: view 用戶界面、用戶視圖
業務模型model中的數據發生改變的時候,用戶視圖view也隨之變化。用戶視圖view改變的時候,業務模型model中的數據也可以發生改變。
- 組件化
- 指令系統
- Vue.js 2.0開始支持虛擬DOM(Vue.js 1.0 是操作的真是DOM,而不是虛擬DOM)
虛擬DOM可以提升頁面的刷新速度。
二、Vue.js起步
每個 Vue 應用都需要通過實例化 Vue 來實現。
語法格式如下:
var vm = new Vue({ // 選項 })
第一個Vue實例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 測試實例 </title> <script src="https://cdn.staticfile.org/vue/2.4.2/vue.min.js"></script> </head> <body> <div id="vue_det"> <h1>uname: {{uname}}</h1> <h1>url : {{url}}</h1> <h1>{{details()}}</h1> </div> <script type="text/javascript"> var vm = new Vue({ el: '#vue_det', data: { uname: "老李頭", url: "www.baidu.com", alexa: "10000" }, methods: { details: function() { return this.uname+ " - 掉坑里了!"; } } }) </script> </body> </html>
可以看到在 Vue 構造器中有一個el 參數,它是 DOM 元素中的 id。在上面實例中 id 為 vue_det,在 div 元素中:
<div id = "vue_det"></div>
這意味着我們接下來的改動全部在以上指定的 div 內,div 外部不受影響。
接下來我們看看如何定義數據對象。
data 用於定義屬性,實例中有三個屬性分別為:site、url、alexa。
methods 用於定義的函數,可以通過 return 來返回函數值。
{{ }} 用於輸出對象屬性和函數返回值。
<div id="vue_det"> <h1>uname: {{uname}}</h1> <h1>url : {{url}}</h1> <h1>{{details()}}</h1> </div>
當一個 Vue 實例被創建時,它向 Vue 的響應式系統中加入了其 data 對象中能找到的所有的屬性。當這些屬性的值發生改變時,html 視圖將也會產生相應的變化。
// 我們的數據對象 var data = { uname: "老李頭", url: "www.baidu.com", alexa: 10000 } var vm = new Vue({ el: '#vue_det', data: data }) // 它們引用相同的對象! document.write(vm.uname === data.uname) // true document.write("<br>") // 設置屬性也會影響到原始數據 vm.uname = "老鄧頭"
document.write(data.uname + "<br>") // Runoob // ……反之亦然 data.alexa = 1234 document.write(vm.alexa) // 1234
三、Vue.js指令
指令,其實指的就是vue的v-開頭的自定義屬性。每個不同的屬性都有各自不同的意義和功能。
指令的語法:
v-指令名稱=”表達式判斷或者是業務模型中屬性名或者是事件名”
3.1 v-text
作用:操作元素中的純文本
快捷方式:{{}}
3.2 v-html
作用:操作元素中的html
3.3 v-bind
作用:v-bind綁定頁面中的元素屬性。例如:a的href屬性,img的src、alt和title屬性。
語法:v-bind:元素的屬性名 = “data中鍵名”
在view模板中,可以使用簡單的JS表單式,例如:
3.4 v-show
作用:通過判斷,是否顯示該內容。如果值為true,則顯示。否則就隱藏。
語法:v-show=”判斷表達式”
特點:元素會始終渲染在DOM中,只是被設置了display:none
3.5 v-if
作用:判斷是否加載固定的內容。如果為真,則加載;為假時,則不加載。
用處:用在權限管理,頁面條件加載
語法:v-if=”判斷表達式”
特點:控制元素插進來或者刪除,而不是隱藏。
v-if與v-show的區別:
一般來說,v-if有更高的切換消耗,安全性更高,而v-show有更多的初始化渲染消耗。因此,如果需要頻繁切換而對安全性無要求,使用v-show。如果在運行時,條件不可能改變,則使用v-if較好。
3.6 v-else
v-else必須緊跟在v-if后面,否則他不能被識別。表示:當v-if的條件不成立的時候執行。
3.7 v-for
作用:控制html元素中的循環,實現詩句列表的生成。
用法:
view:
v-for=”item in 集合”
item: 集合的子項
集合:被遍歷的集合,通常為數組。
用處:寫在誰上,誰循環。
數據:
3.8 v-on
作用:對頁面中的事件進行綁定
語法: v-on:事件類型=“事件處理函數名”
縮寫: @事件類型=“事件處理函數名”
用法:
在view中,用v-on:事件類型=”methods中的方法名字”
在vue實例中,在methods中去監聽:也就書寫methods的該方法。
3.9 v-model
作用:接受用戶輸入的一些數據,直接就可以將這些數據掛在到data屬性上。這樣就產生了雙向的數據綁定(當業務模型中的數據發生變化時,用戶界面中的數據會發生變化;當用戶界面中的數據變化時,業務模型中的數據也會發生變化)。
語法:v-model = “data中的鍵名”
在data中,最好也要定義這個屬性,不然會報錯。