解析如何學(xué)習(xí)Vue框架快速入門
2018-06-22 10:48:05
4604瀏覽
Vue是現(xiàn)在最流行的前端框架之一,而且相對(duì)于其他兩個(gè)框架React和Angular來說也更加易學(xué),而且它的作者是國(guó)人,中文文檔也很完善。當(dāng)然Vue框架算是比較高級(jí)的框架,所以在使用過程中還需要JavaScript、JavaScript2015、WebPack、NodeJS、npm、ESLint、JavaScript單元測(cè)試框架等其他知識(shí)和框架的使用方法。在學(xué)習(xí)Vue之前,最好先學(xué)習(xí)一下這些知識(shí)。由于Vue的中文文檔比較完善,所以這里只介紹Vue框架的一些核心概念,詳細(xì)的使用方法還得查看官方文檔。
如果需要更多Vue資料查看官網(wǎng)或awesome-vue,列舉了很多Vue資源。
Vue基本概念
從單文件開始
首先,我們來拋開那些復(fù)雜的框架配置,先從單文件開始學(xué)習(xí)Vue最基本的內(nèi)容。這樣做很簡(jiǎn)單,講下面的代碼復(fù)制為一個(gè)HTML文件,在瀏覽器中打開即可。這里引用了Vue框架的CDN,所以不需要任何配置即可使用Vue。
<!DOCTYPEhtml>
<html>
<head>
<metacharset="UTF-8">
<title>Vue單文件例子</title>
<scriptsrc="https://cdn.jsdelivr.net/npm/vue"></script>
</head>
<body>
</body>
</html>
Vue實(shí)例
Vue框架中最重要的東西就是Vue實(shí)例了,它是Vue框架的核心對(duì)象。在創(chuàng)建Vue實(shí)例的時(shí)候需要傳入一些參數(shù),el參數(shù)是Vue實(shí)例的作用范圍;data參數(shù)是Vue實(shí)例使用的數(shù)據(jù)。在Vue實(shí)例對(duì)應(yīng)的元素中,我們可以使用模板語(yǔ)法{{var}}來使用這些數(shù)據(jù)。
<h1>Vue實(shí)例</h1>
<divid="s1">
<p>{{data}}</p>
</div>
<script>
letvm1=newVue({
el:'#s1',
data:{
data:'一些數(shù)據(jù)'
}
})
</script>
模板語(yǔ)法
文本插值
上面已經(jīng)展示了一個(gè)小例子。文本需要寫在兩對(duì)花括號(hào)之間。當(dāng)然這里其實(shí)不止可以寫單個(gè)變量,還可以寫組合表達(dá)式,例如{{text+newDate()}}。
所有在構(gòu)造Vue實(shí)例是傳入的數(shù)據(jù)都是可響應(yīng)的,也就是說只要數(shù)據(jù)發(fā)生改變,那么視圖的數(shù)據(jù)也會(huì)發(fā)生改變。如果希望數(shù)據(jù)不發(fā)生改變,需要使用v-once指令。所有v-開頭的都是Vue獨(dú)有的指令,這些指令將在后面介紹。
HTML插值
有時(shí)候需要操作原始HTML,Vue也提供了支持。要插入的HTML代碼需要使用v-html指令來指定,這個(gè)指令會(huì)將它所在的HTML代碼塊整個(gè)替換為要插入的HTML塊。由于可能導(dǎo)致XSS攻擊,所以最好不要隨便替換HTML塊。另外要替換HTML塊的話只能使用v-html指令,如果使用前面的文本插值的話,插入的只是一段文本。
屬性
文本插值只能插入文本,如果需要設(shè)置和修改HTML屬性的話,需要使用v-bind指令。
下面是一個(gè)簡(jiǎn)單的例子,將它復(fù)制到前面的HTML文件中即可看到效果。
<h1>模板語(yǔ)法</h1>
<divid="s2">
<buttonv-on:click='changeText'>修改文本</button>
<p>文本:{{text}}</p>
<p>組合表達(dá)式:</p>
<pv-once>只渲染一次的文本:{{text}}</p>
<p>HTML代碼:<spanv-html="html"></span></p>
<p>屬性:
<buttonv-bind:disabled="disabled">禁用按鈕</button>
</p>
</div>
<script>
letvm2=newVue({
el:'#s2',
data:{
text:1,
html:'<del>666</del>',
disabled:true
},
methods:{
changeText:function(event){
this.text+=1
}
}
})
</script>
計(jì)算屬性
有時(shí)候程序邏輯比較復(fù)雜,可能需要對(duì)一個(gè)數(shù)據(jù)進(jìn)行一些計(jì)算和處理。這時(shí)候就需要計(jì)算屬性了。當(dāng)然由于模板語(yǔ)法支持表達(dá)式,所以也可以直接在{{}}中編寫表達(dá)式,但是不管從可讀性還是可維護(hù)的角度來說,計(jì)算屬性都是更好的選擇。
計(jì)算屬性需要在構(gòu)造Vue實(shí)例的時(shí)候傳入computed屬性,然后在相應(yīng)的函數(shù)中處理復(fù)雜邏輯。計(jì)算屬性可以向普通屬性那樣在視圖中使用。計(jì)算屬性有個(gè)優(yōu)點(diǎn)就是惰性求值,下面的例子中,toUpper計(jì)算屬性依賴于words屬性,只要words不發(fā)生改變,那么多次訪問toUpper不會(huì)重新出發(fā)計(jì)算,而是會(huì)使用已有的結(jié)果。只有當(dāng)words發(fā)生變化時(shí),toUpper才會(huì)相應(yīng)改變。
<h1>計(jì)算屬性</h1>
<divid="s3">
<p>單詞:{{words}}</p>
<p>單詞大寫:{{toUpper}}</p>
</div>
<script>
letvm3=newVue({
el:'#s3',
data:{
words:'Iloveyou'
},
computed:{
toUpper:function(){
returnthis.words.toUpperCase()
}
}
})
</script>
Vue指令
v-once
這個(gè)指令讓視圖只渲染一次,將來就算相應(yīng)的數(shù)據(jù)發(fā)生變化,也不會(huì)重新渲染。該指令主要在希望靜態(tài)顯示不需要更新數(shù)據(jù)的時(shí)候使用。
v-html
這個(gè)指令主要在需要操作原始HTML的時(shí)候使用。
v-bind
該指令在需要綁定HTML標(biāo)簽屬性的時(shí)候使用。為了方便,該指令還有一個(gè)縮寫:,例如:class="myClass"就相當(dāng)于v-bind:class="myClass"。
v-on
該指令主要用于綁定事件處理程序。該指令有縮寫@,例如@click="onClick"就相當(dāng)于v-on:click="onClick"。
v-show、v-if、v-else和v-else-if
這幾個(gè)指令主要用于條件渲染,將在后面進(jìn)行介紹。
v-for
該指令用于渲染整個(gè)列表,將在后面進(jìn)行介紹。
v-model
該指令可以讓頁(yè)面元素和數(shù)據(jù)進(jìn)行雙向綁定。默認(rèn)情況下數(shù)據(jù)和頁(yè)面元素是單向綁定的,使用該指令可以讓其變成雙向綁定。該指令主要用于處理表單等場(chǎng)景。
條件渲染
v-if、v-else和v-else-if這幾個(gè)指令用于條件渲染,讓我們可以按照條件在頁(yè)面上顯示和隱藏某些元素。注意v-else-if指令是Vue2.1新增的。類似的指令還有v-show,不過v-show指令僅僅改變?cè)氐腃SSdisplay屬性,也是說隱藏的元素還是存在于頁(yè)面上,僅僅是不顯示而已。而v-if等元素會(huì)真正創(chuàng)建和銷毀元素。
這些指令的使用方法很簡(jiǎn)單,直接看例子就行了。
<h1>條件渲染</h1>
<divid="s4">
<h3>v-if渲染會(huì)實(shí)際創(chuàng)建和銷毀對(duì)象</h3>
<p>分?jǐn)?shù)是:<inputtype="text"v-model="mark"/></p>
<pv-if="mark<60">不及格</p>
<pv-else-if="mark<80">及格</p>
<pv-else="">優(yōu)秀</p>
<h3>v-show僅僅調(diào)用CSSdisplay屬性</h3>
<button@click="toggleShow">改變show狀態(tài)</button>
<pv-show="show">可以看到我</p>
</div>
<script>
letvm4=newVue({
el:'#s4',
data:{
mark:80,
show:true
},
methods:{
toggleShow:function(){
this.show=!this.show
}
}
})
</script>
列表渲染
如果需要渲染一組數(shù)據(jù),可以使用v-for指令。v-for指令需要一個(gè)iteminitems塊來聲明迭代那些數(shù)據(jù),這里in也可以改為of。如果需要獲取迭代的索引的話,可以把迭代塊聲明為(item,index)initems這樣的。另外除了迭代一個(gè)列表,也可以迭代一個(gè)對(duì)象的屬性。
<h1>列表渲染</h1>
<divid="s5">
<h3>名字列表</h3>
<ul>
<liv-for="nameinnames">{{name}}</li>
</ul>
<h3>人物表格</h3>
<table>
<thead>
<tr>
<td>編號(hào)</td>
<td>姓名</td>
<td>年齡</td>
</tr>
</thead>
<tbody>
<trv-for="(person,index)ofpeople":key="index">
<td>{{index}}</td>
<td>{{person.name}}</td>
<td>{{person.age}}</td>
</tr>
</tbody>
</table>
</div>
<script>
letvm5=newVue({
el:'#s5',
data:{
names:[
'zhang3',
'li4',
'yitian',
'jojo'
],
people:[
{name:'zhang3',age:24},
{name:'li4',age:25},
{name:'yitian',age:24},
{name:'jojo',age:30}
]
}
})
</script>
事件處理
v-on指令用于綁定事件處理函數(shù),這里的函數(shù)需要在構(gòu)造Vue實(shí)例的時(shí)候在methods屬性中聲明。
針對(duì)鍵盤按鍵,Vue還定義了一組按鍵修飾別名,詳情請(qǐng)參考官方文檔。下面是一個(gè)簡(jiǎn)單的例子。
<h1>事件處理</h1>
<divid="s6">
<h3>計(jì)數(shù)器</h3>
<p>
<button@click="addCount">增加計(jì)數(shù)</button>
<em>{{count}}</em>
</p>
<h3>獲取按鍵(單擊、回車和空格)</h3>
<inputtype="text"
@keyup.enter="alert('按下了回車')"
@keyup.space="alert('按下了空格')"
@click="alert('單擊')"/>
</div>
<script>
letvm6=newVue({
el:'#s6',
data:{
count:0
},
methods:{
addCount:function(){
this.count++
}
}
})
</script>
綁定表單
如果要將數(shù)據(jù)和頁(yè)面元素進(jìn)行雙向綁定,使用v-model指令。這個(gè)指令主要用于處理表單輸入中。下面是一組表單例子。
<h1>綁定表單</h1>
<divid="s7">
<p>文本框:{{text}}</p>
<p>多行文本:{{textArea}}</p>
<p>單選按鈕:{{radio}}</p>
<p>復(fù)選框:{{checkbox}}</p>
<p>多選框:{{select}}</p>
<hr>
<p>文本框:<inputtype="text"v-model="text"></p>
<p>多行文本:<textareav-model="textArea"></textarea></p>
<p>單選按鈕:<inputtype="radio"v-model="radio"value="1"id="one"><labelfor="one">1</label>
<inputtype="radio"value="2"v-model="radio"id="two"><labelfor="two">2</label>
</p>
<p>復(fù)選框:<inputtype="checkbox"v-model="checkbox"id="checkbox"><labelfor="checkbox">復(fù)選框</label></p>
<p>多選框:<selectid="select"v-model="select">
<optionvalue="1">1</option>
<optionvalue="2">2</option>
<optionvalue="3">3</option>
<optionvalue="4">4</option>
</select>
</p>
</div>
<script>
letvm7=newVue({
el:'#s7',
data:{
text:'text',
textArea:'textArea',
radio:'',
checkbox:'',
select:'',
}
})
</script>
在處理表單輸入的時(shí)候,還有.lazy、.number、.trim幾個(gè)修飾符,它們的作用分別是在change事件中更新、將表單輸入轉(zhuǎn)換為數(shù)值以及去掉表單中的前后空格。
組件
前面介紹了Vue的各種功能,但是這些功能并不能直接在項(xiàng)目中使用。因?yàn)槿绻苯邮褂玫脑?,?huì)導(dǎo)致出現(xiàn)一個(gè)非常大的Vue實(shí)例,這和將所有代碼都寫在一個(gè)文件的道理是一樣的。所以Vue引入了組件來進(jìn)行模塊化功能。
定義組件和定義一個(gè)Vue實(shí)例類似。不同的是,組件需要有自己的模板,而且組件的data屬性必須是一個(gè)函數(shù)。原因是假如一個(gè)組件在多個(gè)地方復(fù)用,那么原本的data屬性會(huì)導(dǎo)致所有組件實(shí)例共用一個(gè)屬性值。使用函數(shù)后,每個(gè)組件實(shí)例都會(huì)有自己獨(dú)立的數(shù)據(jù)。更加詳細(xì)的解釋和例子請(qǐng)查看官方文檔。
letcomponent1={
template:'<h3>{{hello}}</h3>',
data(){
return{
hello:'helloworld'
}
}
}
定義好了組件之后,我們還需要在Vue中注冊(cè)它。第一種方法是全局注冊(cè),這樣組件就可以在全局范圍中使用。
Vue.component('組件標(biāo)簽名',{
//實(shí)際組件
})
第二種方法更常見,就是局部注冊(cè)。將組建注冊(cè)到局部Vue實(shí)例,那么組件只會(huì)在該實(shí)例的作用域內(nèi)可見。局部注冊(cè)需要在創(chuàng)建Vue實(shí)例的時(shí)候講組件傳入到components屬性中。
letvm8=newVue({
el:'#s8',
components:{
'hello-world':component1,
}
})
組件注冊(cè)完畢之后,我們就可以像使用自定義標(biāo)簽一樣使用它了。
<hello-world></hello-world>
如果需要從父組件中傳遞數(shù)據(jù),需要在子組件中聲明props屬性制定要傳入的數(shù)據(jù)。
letcomponent1={
template:'<p>{{hello}}{{name}}</p>',
data(){
return{
hello:'helloworld'
}
},
props:[
'name'
]
}
然后就可以像這樣傳遞數(shù)據(jù)了。
<hello-worldname="zhang3"></hello-world>
如果需要傳遞動(dòng)態(tài)數(shù)據(jù),使用v-bind指令即可。
<hello-world:name="name"></hello-world>
一個(gè)完整的例子見下。
<h1>組件</h1>
<divid="s8">
<h3>helloworld組件</h3>
<hello-world></hello-world>
<h3>從父組件傳遞數(shù)據(jù)</h3>
<hello-worldname="zhang3"></hello-world>
<h3>動(dòng)態(tài)傳遞數(shù)據(jù)</h3>
<hello-world:name="name"></hello-world>
</div>
<script>
letcomponent1={
template:'<p>{{hello}}{{name}}</p>',
data(){
return{
hello:'helloworld'
}
},
props:[
'name'
]
}
letvm8=newVue({
el:'#s8',
data:{
name:'yitian'
},
components:{
'hello-world':component1,
}
})
</script>
過渡效果
最后來說說Vue的過渡效果,這里只說說最基本的進(jìn)入離開過渡。Vue還支持更加復(fù)雜的狀態(tài)過渡,如果想了解這些更復(fù)雜的知識(shí),請(qǐng)直接查看文檔。
Vue封裝了一個(gè)組件transition,當(dāng)其中的組件被插入、刪除,或者發(fā)生變化的時(shí)候,會(huì)自動(dòng)查看這些組件是否應(yīng)用了過渡CSS類,然后再恰當(dāng)?shù)臅r(shí)機(jī)插入和刪除這些類,從而實(shí)現(xiàn)過渡效果。過渡類名在官方文檔中有介紹,還有一張過渡示意圖,這里我就不再介紹了。
比如說我現(xiàn)在需要一個(gè)透明度過渡效果。我可以這樣編寫CSS類。
.v-enter-active{
transition:all1s;
}
.v-leave-active{
transition:all1s;
}
.v-enter,.v-leave-to{
opacity:0;
}
然后用下面的方法使用,就可以看到實(shí)際效果了。
<divid="s9">
<h3>按鈕過渡</h3>
<button@click="show=!show">改變狀態(tài)</button>
<transition>
<pv-if="show">Hello</p>
</transition>
</div>
<script>
letvm9=newVue({
el:'#s9',
data:{
show:true
}
})
當(dāng)然對(duì)于我這種前端小白來說,自己編寫過渡和動(dòng)畫效果還是有點(diǎn)困難。幸好有很多第三方動(dòng)畫庫(kù),而且Vue允許我們自定義類名,以便和這些動(dòng)畫庫(kù)配合使用。比方說Animate.css,我們可以將CDN添加到頁(yè)面中來使用。
然后自定義類名即可。
<transitionenter-active-class="animatedfadeInLeft"
leave-active-class="animatedfadeOutUpBig">
<pv-if="show">Hello</p>
</transition>
完整的單文件例子可以查看我的示例項(xiàng)目。
Vue工程化
前面介紹了Vue的基本概念,但是這些概念無法直接用在項(xiàng)目中。下面通過Vue和各種工具鏈的使用,來介紹如何用Vue創(chuàng)建實(shí)際前端項(xiàng)目。
從模板創(chuàng)建Vue項(xiàng)目
首先確保你安裝了NodeJS,然后安裝Vue命令行工具。如果npm速度太慢的話,可以使用淘寶鏡像來加速。
npminstall-gvue-cli
安裝完成之后,使用vue-cli來創(chuàng)建模板項(xiàng)目。由于WebPack打包工具現(xiàn)在非常流行,所以這里選擇創(chuàng)建WebPack模板。創(chuàng)建的時(shí)候除了Vue之外,其他組件如vue-router、eslint等都不要選。
vueinitwebpackyour-app-name
項(xiàng)目創(chuàng)建完畢之后,切換到項(xiàng)目文件夾中,可以看到已經(jīng)生成了一堆文件。然后我們使用npmi來安裝所有的依賴包。安裝完成之后,使用npmrundev來運(yùn)行測(cè)試服務(wù)器。這個(gè)項(xiàng)目模板支持熱重載等特性,所以我們接下來的開發(fā)過程可以直接在此基礎(chǔ)上進(jìn)行,不需要重啟服務(wù)器。這時(shí)候我們也可以使用WebStorm的開發(fā)工具編輯項(xiàng)目,充分享受IDE帶來的便捷。
下面介紹一下模板項(xiàng)目的結(jié)構(gòu)。build和config文件夾存放的是項(xiàng)目的構(gòu)建文件和配置文件,會(huì)有WebPack和npm使用。node_modules是項(xiàng)目所需的模塊存放位置。src文件夾下存放著項(xiàng)目所需的源代碼,主要是JavaScript和Vue文件。assets文件夾存放的是項(xiàng)目所需的靜態(tài)文件,例如圖片、樣式表等。components文件夾是Vue組件的存放位置。App.vue是項(xiàng)目默認(rèn)的跟組件。main.js是項(xiàng)目的入口JavaScript文件。index.html是項(xiàng)目的默認(rèn)HTML文件。圖里面還有一個(gè)sample.html,就是上面我介紹Vue時(shí)使用的單HTML文件。
單文件組件
前面介紹了Vue強(qiáng)大的組件功能,但是這種組件是不能擴(kuò)展的。一般情況下,項(xiàng)目中應(yīng)該使用單文件組件。在上面創(chuàng)建的項(xiàng)目中,實(shí)際上已經(jīng)包含了一個(gè)單文件組件。讓我們看看實(shí)際的項(xiàng)目應(yīng)該如何組織這些組件。
先來看看主HTML文件index.html,它的內(nèi)容很簡(jiǎn)單。它的真實(shí)內(nèi)容會(huì)由WebPack打包進(jìn)去。一般情況下我們只需要保持不變就好了。當(dāng)然頁(yè)面標(biāo)題之類的屬性還是要改的。
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>vue-sample</title>
</head>
<body>
<divid="app"></div>
<!--builtfileswillbeautoinjected-->
</body>
</html>
然后來看看項(xiàng)目入口文件main.js,它的內(nèi)容如下??梢钥吹剿淖饔煤芎?jiǎn)單,創(chuàng)建根Vue實(shí)例,并將根應(yīng)用組件App注入其中。
importVuefrom'vue'
importAppfrom'./App'
Vue.config.productionTip=false
/*eslint-disableno-new*/
newVue({
el:'#app',
template:'<App/>',
components:{App}
})
然后來看看根組件App.vue中寫了什么,這是一個(gè)單文件組件,它調(diào)用了另一個(gè)單文件組件<hello-world/>。單文件組件和前面介紹的組件一樣,都有一個(gè)模板屬性,需要注意模板屬性中的元素必須有一個(gè)根元素,不能出現(xiàn)多個(gè)并列的元素。還有一個(gè)腳本塊,這里是單文件組件中代碼邏輯部分,需要注意的是,這個(gè)地方必須向外暴露創(chuàng)建Vue實(shí)例所需的那個(gè)屬性對(duì)象。這里還有一個(gè)樣式塊,是單文件組件修改樣式的地方。
<template>
<divid="app">
<imgsrc="./assets/logo.png">
<hello-world/>
</div>
</template>
<script>
importHelloWorldfrom'./components/HelloWorld'
exportdefault{
name:'app',
components:{
HelloWorld
}
}
</script>
<style>
...
</style>
Vue路由快速入門
安裝
最簡(jiǎn)單的辦法就是在前面創(chuàng)建模板項(xiàng)目的時(shí)候同時(shí)選擇使用vue-router。如果沒有在創(chuàng)建項(xiàng)目是選擇vue-router,就需要手動(dòng)添加到項(xiàng)目中。
下面用前面創(chuàng)建的沒有安裝vue-router的模板項(xiàng)目做例子來介紹。首先需要安裝vue-router并將其添加到package.json文件中。
npmi-Svue-router
然后創(chuàng)建src/router/index.js文件,并在其中添加如下代碼。這樣會(huì)在全局注冊(cè)Vue路由組件。
importVuefrom'vue'
importRouterfrom'vue-router'
Vue.use(Router)
exportdefaultnewRouter()
最后在項(xiàng)目入口文件src/main.js中在全局Vue實(shí)例中注冊(cè)路由。
importVuefrom'vue'
importAppfrom'./App'
importrouterfrom'./router'
Vue.config.productionTip=false
/*eslint-disableno-new*/
newVue({
el:'#app',
router,
template:'<App/>',
components:{App}
})
這樣Vue路由功能就注冊(cè)好了。
添加路由
下面來添加第一個(gè)路由。和Vue實(shí)例一樣,router實(shí)例也可以在構(gòu)造的時(shí)候通過參數(shù)來配置。首先在路由構(gòu)造函數(shù)中添加路由屬性,每個(gè)路由都需要有路徑、組件名以及實(shí)際組件。
importVuefrom'vue'
importRouterfrom'vue-router'
importHelloWorldfrom'@/components/HelloWorld'
Vue.use(Router)
exportdefaultnewRouter({
routes:[
{
path:'/',
name:'Hello',
component:HelloWorld
},
],
})
添加好路由之后,為了能讓程序隨路由變化而顯示不同內(nèi)容,我們還需要使用vue-router預(yù)設(shè)的組件<router-view/>,它會(huì)在運(yùn)行的時(shí)候替換為我們所定義的組件。在這個(gè)例子中,只需要將App.vue文件中的hello-world組件替換為router-view即可。
<template>
<divid="app">
<imgsrc="./assets/logo.png">
<router-view></router-view>
</div>
</template>
切換為HTML5歷史模式
在使用Vue路由的時(shí)候,我們會(huì)發(fā)現(xiàn)瀏覽器中的地址長(zhǎng)的是這個(gè)樣子:xxx/#/。這是Vue路由的默認(rèn)哈希模式,優(yōu)點(diǎn)就是兼容性強(qiáng)。還有另外一種模式就是HTML歷史模式。要使用這種模式很簡(jiǎn)單,在構(gòu)造Vue路由的時(shí)候,將mode參數(shù)設(shè)置為history即可。這樣一來,瀏覽器地址欄就會(huì)變成正常狀態(tài)。當(dāng)然這種模式也有缺點(diǎn),就是假如后臺(tái)沒配置好,訪問某些頁(yè)面可能會(huì)返回404錯(cuò)誤。所以具體使用哪種模式還需要自己仔細(xì)考慮。
exportdefaultnewRouter({
routes:[
{
path:'/',
name:'Hello',
component:HelloWorld
},
],
mode:'history'
})
Vue路由相對(duì)于Vue核心框架來說,沒什么復(fù)雜的概念,基本上很容易理解和上手。所以我這里就不做過多介紹了。官方文檔介紹的更加完整。
Vue和視圖框架
通過以上學(xué)習(xí)我們可以看到Vue可以算是一個(gè)MVVM框架,主要作用就是將前臺(tái)頁(yè)面和數(shù)據(jù)綁定起來。為了做出漂亮的視覺效果,我們還需要和其他視圖框架進(jìn)行集成。
和Bootstrap4集成
Bootstrap是最著名的前端框架之一,可以幫助我們迅速創(chuàng)建漂亮的頁(yè)面。現(xiàn)在它的最新版本是4.0.0-beta,基本可以在項(xiàng)目中投入使用了。現(xiàn)在假設(shè)我們有一個(gè)啟用了路由功能的基于WebPack的Vue模板項(xiàng)目,來看看如何安裝Bootstrap4吧。
首先,用npm安裝Bootstrap4和相關(guān)的幾個(gè)依賴包。這里特別注意Bootstrap的版本,這里我們用的是4。如果不加版本號(hào)的話,會(huì)安裝3的穩(wěn)定版。不過現(xiàn)在穩(wěn)定版已經(jīng)停止更新了,不會(huì)再添加任何新功能了,只進(jìn)行bug修復(fù)和維護(hù)。
npminstall-Sbootstrap@4.0.0-betajquerypopper.js
安裝好之后,還需要修改WebPack配置文件。在Vue模板中,配置文件有三個(gè),webpack.base.conf.js、webpack.dev.conf.js和webpack.prod.conf.js,分別代表基礎(chǔ)配置、開發(fā)配置和生產(chǎn)配置。為了讓配置在所有條件下生效,我們需要在webpack.base.conf.js中配置。辦法也很簡(jiǎn)單,添加plugins屬性和下面的插件即可。如果在該文件中沒有導(dǎo)入webpack模塊,還需要在開頭添加一行constwebpack=require('webpack')導(dǎo)入該模塊。
plugins:[
newwebpack.ProvidePlugin({
$:'jquery',
jQuery:'jquery',
'window.jQuery':'jquery',
Popper:['popper.js','default'],
})
然后在項(xiàng)目入口文件src/main.js中引入Bootstrap的樣式文件和JavaScript文件即可。
importVuefrom'vue'
importAppfrom'./App'
importrouterfrom'./router'
//引入Bootstrap文件
import'bootstrap'
import'bootstrap/dist/css/bootstrap.min.css'
Vue.config.productionTip=false
/*eslint-disableno-new*/
newVue({
})
最后別忘了在index.html中添加Bootstrap的meta標(biāo)簽。
<metaname="viewport"content="width=device-width,initial-scale=1,shrink-to-fit=no">
然后在頁(yè)面中就可以使用Bootstrap樣式來開發(fā)程序了。
和ElementUI集成
element-ui是Vue2.0的一組組件庫(kù),可以幫助我們快速開發(fā)項(xiàng)目。
首先通過npm安裝。
npmielement-ui-S
然后在main.js文件中寫入以下內(nèi)容。
importVuefrom'vue'
importElementUIfrom'element-ui'
import'element-ui/lib/theme-default/index.css'
importAppfrom'./App.vue'
Vue.use(ElementUI)
newVue({
el:'#app',
render:h=>h(App)
})
element-ui的效果如圖。
以上就是小編給大家分享的解析如何學(xué)習(xí)Vue框架快速入門的示例代碼,希望對(duì)小伙伴們有所幫助,想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢。扣丁學(xué)堂是專業(yè)的HTML5培訓(xùn)機(jī)構(gòu),扣丁學(xué)堂不僅有專業(yè)的老師和與時(shí)俱進(jìn)的課程體系,還有大量的HTML5視頻教程供學(xué)員觀看學(xué)習(xí)哦??鄱W(xué)堂H5技術(shù)交流群:559883758。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“HTML5開發(fā)技術(shù)資訊”的相關(guān)文章>>
標(biāo)簽:
HTML5培訓(xùn)
HTML5視頻教程
AngularJS
HTML5在線視頻
HTML5從入門到精通