1 vue.js研究
1.1 vue.js介紹
1濒析、vue.js是什么庶香?
Vue (讀音 /vju?/夫嗓,類(lèi)似于 view) 是一套用于構(gòu)建用戶(hù)界面的漸進(jìn)式框架。與其它大型框架不同的是篙挽,Vue 被設(shè)計(jì)
為可以自底向上逐層應(yīng)用荆萤。Vue 的核心庫(kù)只關(guān)注視圖層,不僅易于上手铣卡,還便于與第三方庫(kù)或既有項(xiàng)目整合链韭。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類(lèi)庫(kù)結(jié)合使用時(shí)煮落,Vue 也完全能夠?yàn)閺?fù)雜的單頁(yè)應(yīng)用提供驅(qū)動(dòng)敞峭。
漸進(jìn)式框架:Progressive,說(shuō)明vue.js的輕量蝉仇,是指一個(gè)前端項(xiàng)目可以使用vue.js一兩個(gè)特性也可以整個(gè)項(xiàng)目都用vue.js旋讹。
自底向上逐層應(yīng)用:作為漸進(jìn)式框架要實(shí)現(xiàn)的目標(biāo)就是方便項(xiàng)目增量開(kāi)發(fā)。
參考:https://cn.vuejs.org/v2/guide/
2轿衔、Vue.js的使用
1)在html頁(yè)面使用script引入vue.js的庫(kù)即可使用沉迹。
2)使用Npm管理依賴(lài),使用webpack打包工具對(duì)vue.js應(yīng)用打包呀枢。
大型應(yīng)用推薦此方案胚股。
3)Vue-CLI腳手架
使用vue.js官方提供的CLI腳本架很方便去創(chuàng)建vue.js工程雛形。
4裙秋、vue.js有哪些功能?
1)聲明式渲染
Vue.js 的核心是一個(gè)允許采用簡(jiǎn)潔的模板語(yǔ)法來(lái)聲明式地將數(shù)據(jù)渲染進(jìn) DOM 的系統(tǒng)缨伊。
比如:使用vue.js的插值表達(dá)式放在Dom的任意地方摘刑, 差值表達(dá)式的值將被渲染在Dom中。
2)條件與循環(huán)
dom中可以使用vue.js提供的v-if
刻坊、v-for
等標(biāo)簽枷恕,方便對(duì)數(shù)據(jù)進(jìn)行判斷、循環(huán)谭胚。
3)雙向數(shù)據(jù)綁定
Vue 提供v-model 指令徐块,它可以輕松實(shí)現(xiàn)Dom元素和數(shù)據(jù)對(duì)象之間雙向綁定未玻,即修改Dom元素中的值自動(dòng)修改綁定的數(shù)據(jù)對(duì)象,修改數(shù)據(jù)對(duì)象的值自動(dòng)修改Dom元素中的值胡控。
4)處理用戶(hù)輸入
為了讓用戶(hù)和你的應(yīng)用進(jìn)行交互扳剿,我們可以用v-on
指令添加一個(gè)事件監(jiān)聽(tīng)器,通過(guò)它調(diào)用在 Vue 實(shí)例中定義的方法
5)組件化應(yīng)用構(gòu)建
vue.js可以定義一個(gè)一個(gè)的組件昼激,在vue頁(yè)面中引用組件庇绽,這個(gè)功能非常適合構(gòu)建大型應(yīng)用。
1.2 vue.js基礎(chǔ)
1.2.1 MVVM模式
vue.js是一個(gè)MVVM的框架橙困,理解MVVM有利于學(xué)習(xí)vue.js瞧掺。
-
MVVM拆分解釋為:
- Model:負(fù)責(zé)數(shù)據(jù)存儲(chǔ)
- View:負(fù)責(zé)頁(yè)面展示
- View Model:負(fù)責(zé)業(yè)務(wù)邏輯處理(比如Ajax請(qǐng)求等),對(duì)數(shù)據(jù)進(jìn)行加工后交給視圖展示
MVVM要解決的問(wèn)題是將業(yè)務(wù)邏輯代碼與視圖代碼進(jìn)行完全分離凡傅,使各自的職責(zé)更加清晰辟狈,后期代碼維護(hù)更
加簡(jiǎn)單用圖解的形式分析Ajax請(qǐng)求回來(lái)數(shù)據(jù)后直接操作Dom來(lái)達(dá)到視圖的更新的缺點(diǎn),以及使用MVVM模式是如何
來(lái)解決這個(gè)缺點(diǎn)的
Vue中的 MVVM
從上圖看出夏跷,VM(ViewModel)可以把view視圖和Model模型解耦合哼转,VM的要做的工作就是vue.js所承擔(dān)的。
1.2.2 入門(mén)程序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title>vue</title>
<script src="vue.min.js"></script>
</head>
<body>
<!‐‐ 在Vue接管區(qū)域中使用Vue的系統(tǒng)指令呈現(xiàn)數(shù)據(jù)
這些指令就相當(dāng)于是MVVM中的View這個(gè)角色 ‐‐>
<div id="app">
{{name}}
</div>
</body>
<script>
//vm :叫做MVVM中的 View Model
var vm = new Vue({
el:"#app",//表示當(dāng)前vue對(duì)象接管app的div區(qū)域
data:{
name:"大師兄拓春,師傅被妖怪抓走了"http:// 相當(dāng)于是MVVM中的Model這個(gè)角色
}
});
</script>
</html>
代碼編寫(xiě)步驟:
1释簿、定義html,引入vue.js
2硼莽、定義app div庶溶,此區(qū)域作為vue的接管區(qū)域
3、定義vue實(shí)例懂鸵,接管app區(qū)域偏螺。
4、定義model(數(shù)據(jù)對(duì)象)
5匆光、VM完成在app中展示數(shù)據(jù)
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可以解決網(wǎng)速慢出現(xiàn)表達(dá)式的問(wèn)題-->
<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">計(jì)算</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、在表單控件或者組件上創(chuàng)建雙向綁定
2终息、v-model僅能在如下元素中使用:
input
select
textarea
components(Vue中的組件)
2夺巩、解決插值表達(dá)式閃爍問(wèn)題,使用v-text
v-text可以將一個(gè)變量的值渲染到指定的元素中,它可以解決插值表達(dá)式閃爍的問(wèn)題
3周崭、v-on綁定一個(gè)按鈕的單擊事件
4柳譬、v-bind
1、作用:
v‐bind可以將數(shù)據(jù)對(duì)象綁定在dom的任意屬性中续镇。
v‐bind可以給dom對(duì)象綁定一個(gè)或多個(gè)特性美澳,例如動(dòng)態(tài)綁定style和class
2、舉例:
<img v‐bind:src="imageSrc">
<div v‐bind:style="{ fontSize: size + 'px' }"></div>
3、縮寫(xiě)形式
<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接管區(qū)域中使用Vue的系統(tǒng)指令呈現(xiàn)數(shù)據(jù)
這些指令就相當(dāng)于是MVVM中的View這個(gè)角色 ‐‐>
<div id="app">
<!--相當(dāng)于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>