這篇文章主要介紹了Vue組件的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比博野網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式博野網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋博野地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
Vue實(shí)例
項(xiàng)目啟動過程
看一下現(xiàn)在我們的項(xiàng)目,想想整個項(xiàng)目的啟動過程是什么(以直接打開index.html的方法訪問為例來說明)?
你首先打開了index.html,里面只有一個寫了一個id='root'的div,還有你引入了打包之后的代碼,然后Vue自己肯定運(yùn)行了一下(可以認(rèn)為是Vue初始化)。
接著,應(yīng)該是執(zhí)行了entry.js(因?yàn)榇虬莣ebpack打包的,你配置的入口文件就這一個)。
entry.js干了什么,是的,創(chuàng)建了一個Vue實(shí)例對象,然后這個對象管理的區(qū)域根據(jù)el屬性知道,應(yīng)該是index.html中id='root'的那個div,因此余下的事情就只有明白這個Vue實(shí)例對象是如何管理這片區(qū)域的就可以了,這就是接下來的內(nèi)容了。
什么是Vue實(shí)例對象?
根據(jù)官方文檔的說明:每個Vue應(yīng)用都是通過用Vue函數(shù)創(chuàng)建一個新的Vue實(shí)例開始的。
你可以簡單的理解,他就是一個普普通通的對象罷了,只不過這個對象被賦予了一些特殊的功能,讓我們來了解一下他吧!
【我們接下來都是在entry.js里面創(chuàng)建的那個Vue對象上面進(jìn)行實(shí)驗(yàn)的】
一個Vue實(shí)例對象創(chuàng)建的方法如下:
var vm=new Vue({
//一堆配置
});因此,接下來要說的就是一些常用的配置(不是全部,比較特殊的以后應(yīng)該會說,畢竟開始就全部,我怕彼此心都太累了)。
Vue實(shí)例對象基本配置
【1】el:選擇器| DOM結(jié)點(diǎn)
在我們的項(xiàng)目中,我們配置的是:
el:'#root'
這是一個字符串,有點(diǎn)類似CSS選擇器,它會使用查找到的結(jié)點(diǎn)作為管理區(qū)域(當(dāng)然還有別的CSS選擇器也可以)。
除此之外,你還可以直接傳遞一個結(jié)點(diǎn),比如現(xiàn)在我們修改一下代碼:
el: document.getElementById('root')這樣也是可以了,你可以試試。
【2】render:(createElement:()=>VNode)=>VNode
上面的是ES6的箭頭函數(shù)寫法,舉個栗子:
((x,y)=>x+y)(1,2)
上面ES6的寫法等同于下面ES5的寫法:
(function(x,y){
return x+y;
})(1,2);簡單的說就是:(x,y)=>x+y就表示一個有二個參數(shù)x和y,返回x+y的函數(shù),因此上面的函數(shù)用ES5的寫法就是:
function(createElement){
//createElement是一個函數(shù),返回類型為VNode
//這個函數(shù)的返回類型也應(yīng)該是VNode
return VNode;
}備注:VNode是Vue編譯生成的虛擬節(jié)點(diǎn),想一下Jquery節(jié)點(diǎn),還有Node節(jié)點(diǎn),是不是味道很像。
因此,我把項(xiàng)目中的render稍微改一下:
render: function (createElement) {
return createElement(App);
}是不是很清晰了,說白了,就是一個最后返回值是VNode的函數(shù)。
因此看見節(jié)點(diǎn)這二個字,應(yīng)該可以理解頁面為什么顯示的是App里面的模板了吧,如何路由調(diào)整為什么配置的是.vue文件大概也有點(diǎn)感覺了吧。
【3】router:VueRouter
這個比較容易理解,就是知道使用的路由配置是什么,由于項(xiàng)目中是:
router:router
看著很奇怪,我們稍微修改一下:
//上面的import routerObj from './router';這一句要跟著修改一下 router: routerObj
基本的就到這里,就三個,別的屬性因?yàn)檫€關(guān)聯(lián)很多東西,會一點(diǎn)點(diǎn)來說明。
Vue對象生命周期
官方的圖我就不放了,感覺意義不大,推薦入門了以后可以去看看,因此后面的文章可能會說。
下面我們來先在entry.js里面修改一下代碼,看看運(yùn)行結(jié)果,下面是代碼:
//根對象
var vm = new Vue({
//掛載點(diǎn)
el: document.getElementById('root'),
//2.使用剛剛的路由配置
router: routerObj,
//啟動組件
render: function (createElement) {
return createElement(App);
},
//下面是Vue對象的幾種狀態(tài)
beforeCreate: function () {
console.debug('Vue對象目前狀態(tài):beforeCreate');
},
created: function () {
console.debug('Vue對象目前狀態(tài):created');
},
beforeMount: function () {
console.debug('Vue對象目前狀態(tài):beforeMount');
},
mounted: function () {
console.debug('Vue對象目前狀態(tài):mounted');
},
beforeUpdate: function () {
console.debug('Vue對象目前狀態(tài):beforeUpdate');
},
updated: function () {
console.debug('Vue對象目前狀態(tài):updated');
},
beforeDestroy: function () {
console.debug('Vue對象目前狀態(tài):beforeDestroy');
},
destroyed: function () {
console.debug('Vue對象目前狀態(tài):destroyed');
}
});運(yùn)行一下看看控制臺。
因此,就是說,Vue對象從創(chuàng)建前到最后死亡,在各個階段狀態(tài)改變的時候,都提供了一個鉤子方法,你可以注冊一下,如果你希望在特定狀態(tài)改變的時候干點(diǎn)什么的話。
到這里,基本上Vue對象實(shí)例應(yīng)該比較清楚了吧?看看我們的代碼,應(yīng)該只有那幾個.vue的文件里面的東西沒有說清楚了(本文就是把前面寫過的代碼都說清楚,后面就可以一個新知識點(diǎn)接著一個的來豐富項(xiàng)目,因?yàn)槎紱]有疑惑了,學(xué)習(xí)起來應(yīng)該不會痛苦了吧!)。
Vue組件實(shí)例
說明
Vue組件的定義方法不是只有我們之前寫的建立.vue文件那一種,比如你還可以通過Vue.component()的方法來創(chuàng)建,不過這些都以后吧,我們這里就只說明.vue文件這一種(不喜歡一下子說太多,而且仔細(xì)想想,不就是API嗎)。
【下面都是在PageTwo.vue里面進(jìn)行修改,菜單名稱修改為:Vue組件實(shí)例】
.vue文件的基本模板如下(下面都會是ES5的寫法,本人還是不太喜歡ES6或者TS,原諒我,反正本質(zhì)一樣):
<template>
</template>
<script>
export default {
//一些配置,和前面說的Vue實(shí)例類似
}
</script>
<style>
</style>三個地方,分工明確:模板 + 控制 + 樣式
接下來我們說明配置中常用的選項(xiàng)(很多具體的就留到后面一點(diǎn)點(diǎn)品位,好吧,留的有點(diǎn)多):
常用配置
【1】data
先看看PageTwo.vue現(xiàn)在的代碼:
<template>
<section>
<input type="text" v-model="justDoIt">
<div>
輸入的數(shù)據(jù):{{justDoIt}}
</div>
</section>
</template>
<script>
export default {
//一些配置
data() {
return {
justDoIt: "初始化數(shù)據(jù)"
};
}
};
</script>
<style>
</style>模板中的代碼應(yīng)該不用說了吧,前面一篇文章說的很清楚了,直接看看data。
其返回了一個鍵值對(還有別的寫法,推薦你這樣寫,因?yàn)檫@里如果"初始化數(shù)據(jù)"這幾個字是變量,這種寫法形成了閉包,是安全的),在這里就是給當(dāng)前組件對象是data里面添加了一個justDoIt的數(shù)據(jù),然后上面或者別的地方才可以用,他就是干了這事情。
【2】methods
接著,我們添加一下methods屬性:
methods: {
doIt() {
alert(this.justDoIt);
}
}其實(shí)methods和data類似,只不過是用來添加的不是數(shù)據(jù),而是方法,因此,你現(xiàn)在可以在模板里面添加下面代碼來調(diào)用這個方法(記住,添加的全部代碼必須由一個標(biāo)簽包裹):
<input type="button" value="DoIt" v-on:click="doIt()">
v-on:click就是類似原生的onClick,不過因?yàn)槭莢ue的方法,你應(yīng)該用他的。
現(xiàn)在,你可以點(diǎn)擊一下頁面的按鈕試一下,是不是很舒服。
【3】watch
這個屬性是專門用來注冊監(jiān)聽前面data里面注冊的值改變的時候觸發(fā)的方法集合,比如你添加下面的代碼:
watch: {
justDoIt: function(newval, oldval) {
console.log("justDoIt改變了,新值為:" + newval + ",舊值為:" + oldval);
}
}如何你運(yùn)行一下,打開控制臺,修改輸入框的值的時候,是不是控制臺時刻打印了這句話。
【4】computed
這個叫做計(jì)算屬性,前面一篇文章說過了,不清楚的看看PageOne.vue,應(yīng)該可以明白。
簡單的說就是,它用到的data里面的值改變的時候,自己會重新計(jì)算。
生命周期
和Vue對象一樣,也有類似的生命周期鉤子,你可以試試,這里就隨便提一下。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Vue組件的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
當(dāng)前標(biāo)題:Vue組件的示例分析
文章網(wǎng)址:http://chinadenli.net/article20/jhjejo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站排名、網(wǎng)站制作、響應(yīng)式網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)