1 vue.js研究
1.1 vue.js介紹
1、vue.js是什么?
Vue (讀音 /vju?/,類似于 view) 是一套用于構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計
為可以自底向上逐層應用。Vue 的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue 也完全能夠為復雜的單頁應用提供驅動。
漸進式框架:Progressive,說明vue.js的輕量,是指一個前端項目可以使用vue.js一兩個特性也可以整個項目都用vue.js。
自底向上逐層應用:作為漸進式框架要實現的目標就是方便項目增量開發。
參考:https://cn.vuejs.org/v2/guide/
2、Vue.js的使用
1)在html頁面使用script引入vue.js的庫即可使用。
2)使用Npm管理依賴,使用webpack打包工具對vue.js應用打包。
大型應用推薦此方案。
3)Vue-CLI腳手架
使用vue.js官方提供的CLI腳本架很方便去創建vue.js工程雛形。
4、vue.js有哪些功能?
1)聲明式渲染
Vue.js 的核心是一個允許采用簡潔的模板語法來聲明式地將數據渲染進 DOM 的系統。
比如:使用vue.js的插值表達式放在Dom的任意地方, 差值表達式的值將被渲染在Dom中。
2)條件與循環
dom中可以使用vue.js提供的v-if
、v-for
等標簽,方便對數據進行判斷、循環。
3)雙向數據綁定
Vue 提供v-model 指令,它可以輕松實現Dom元素和數據對象之間雙向綁定,即修改Dom元素中的值自動修改綁定的數據對象,修改數據對象的值自動修改Dom元素中的值。
4)處理用戶輸入
為了讓用戶和你的應用進行交互,我們可以用v-on
指令添加一個事件監聽器,通過它調用在 Vue 實例中定義的方法
5)組件化應用構建
vue.js可以定義一個一個的組件,在vue頁面中引用組件,這個功能非常適合構建大型應用。
1.2 vue.js基礎
1.2.1 MVVM模式
vue.js是一個MVVM的框架,理解MVVM有利于學習vue.js。
-
MVVM拆分解釋為:
- Model:負責數據存儲
- View:負責頁面展示
- View Model:負責業務邏輯處理(比如Ajax請求等),對數據進行加工后交給視圖展示
MVVM要解決的問題是將業務邏輯代碼與視圖代碼進行完全分離,使各自的職責更加清晰,后期代碼維護更
加簡單用圖解的形式分析Ajax請求回來數據后直接操作Dom來達到視圖的更新的缺點,以及使用MVVM模式是如何
來解決這個缺點的
Vue中的 MVVM
從上圖看出,VM(ViewModel)可以把view視圖和Model模型解耦合,VM的要做的工作就是vue.js所承擔的。
1.2.2 入門程序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title>vue</title>
<script src="vue.min.js"></script>
</head>
<body>
<!‐‐ 在Vue接管區域中使用Vue的系統指令呈現數據
這些指令就相當于是MVVM中的View這個角色 ‐‐>
<div id="app">
{{name}}
</div>
</body>
<script>
//vm :叫做MVVM中的 View Model
var vm = new Vue({
el:"#app",//表示當前vue對象接管app的div區域
data:{
name:"大師兄,師傅被妖怪抓走了"http:// 相當于是MVVM中的Model這個角色
}
});
</script>
</html>
代碼編寫步驟:
1、定義html,引入vue.js
2、定義app div,此區域作為vue的接管區域
3、定義vue實例,接管app區域。
4、定義model(數據對象)
5、VM完成在app中展示數據
1.2.3 1+1=2
<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF‐8">
<title></title>
<script src="vue.min.js"></script>
</head>
<body>
<div id="app">
<!--{{name}}-->
<!--v-text可以解決網速慢出現表達式的問題-->
<a v-bind:href="url">
<span v-text="name"></span>
</a>
<input type="text" v-model="num1">+
<input type="text" v-model="num2">=
<span v-text="result"></span>
<!--<span v-text="Number.parseInt(num1)+Number.parseInt(num2)"></span>-->
<!--{{Number.parseInt(num1)+Number.parseInt(num2)}}-->
<button v-on:click="change">計算</button>
</div>
</body>
<script>
var vm = new Vue({
el:"#app",
data:{
name:"田師傅",
num1:0,
num2:0,
result:0,
url:"http://www.baidu.com"
},
methods:{
change:function () {
this.result= Number.parseInt(this.num1)+Number.parseInt(this.num2)
alert(this.result)
}
}
});
</script>
</html>
1、v-model:
1、在表單控件或者組件上創建雙向綁定
2、v-model僅能在如下元素中使用:
input
select
textarea
components(Vue中的組件)
2、解決插值表達式閃爍問題,使用v-text
v-text可以將一個變量的值渲染到指定的元素中,它可以解決插值表達式閃爍的問題
3、v-on綁定一個按鈕的單擊事件
4、v-bind
1、作用:
v‐bind可以將數據對象綁定在dom的任意屬性中。
v‐bind可以給dom對象綁定一個或多個特性,例如動態綁定style和class
2、舉例:
<img v‐bind:src="imageSrc">
<div v‐bind:style="{ fontSize: size + 'px' }"></div>
3、縮寫形式
<img :src="imageSrc">
<div :style="{ fontSize: size + 'px' }"></div>
1.2.4 v-if和v-for
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title> </title>
<script src="vue.min.js"></script>
</head>
<body>
<!‐‐ 在Vue接管區域中使用Vue的系統指令呈現數據
這些指令就相當于是MVVM中的View這個角色 ‐‐>
<div id="app">
<!--相當于MVVM的view視圖-->
<ul>
<li v-for="(item,index) in list" :key="index" v-if="index % 2 ==0">{{index}}--{{item}}</li>
<li v-for="(value,key) in user">{{key}}--{{value}}</li>
<li v-for="(item,index) in userlist" :key="item.user.uname">
<div v-if="item.user.uname == 'smile1'" style="background: #00f50c">
{{index}}--{{item.user.uname}}--{{item.user.age}}
</div>
<div v-else="">
{{index}}--{{item.user.uname}}--{{item.user.age}}
</div>
</li>
</ul>
</div>
</body>
<script>
//vm :叫做MVVM中的 View Model
var vm = new Vue({
el:'#app',
data:{
list:[1,2,3,4,4],
user:{uname:'smile',age:10},
userlist:[
{ user:{uname:'smile1',age:10}},
{ user:{uname:'smile2',age:11}}
]
}
});
</script>
</html>