最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

學(xué)習(xí)Vue組件實(shí)例

 更新時(shí)間:2018年04月28日 10:54:56   投稿:laozhang  
本篇文章給大家分享了Vue實(shí)例的相關(guān)內(nèi)容以及重要知識點(diǎn),對此有興趣的朋友可以跟著學(xué)習(xí)參考下。

Vue實(shí)例

項(xiàng)目啟動(dòng)過程

看一下現(xiàn)在我們的項(xiàng)目,想想整個(gè)項(xiàng)目的啟動(dòng)過程是什么(以直接打開index.html的方法訪問為例來說明)?

你首先打開了index.html,里面只有一個(gè)寫了一個(gè)id='root'的div,還有你引入了打包之后的代碼,然后Vue自己肯定運(yùn)行了一下(可以認(rèn)為是Vue初始化)。

接著,應(yīng)該是執(zhí)行了entry.js(因?yàn)榇虬莣ebpack打包的,你配置的入口文件就這一個(gè))。

entry.js干了什么,是的,創(chuàng)建了一個(gè)Vue實(shí)例對象,然后這個(gè)對象管理的區(qū)域根據(jù)el屬性知道,應(yīng)該是index.html中id='root'的那個(gè)div,因此余下的事情就只有明白這個(gè)Vue實(shí)例對象是如何管理這片區(qū)域的就可以了,這就是接下來的內(nèi)容了。

什么是Vue實(shí)例對象?

根據(jù)官方文檔的說明:每個(gè)Vue應(yīng)用都是通過用Vue函數(shù)創(chuàng)建一個(gè)新的Vue實(shí)例開始的。

你可以簡單的理解,他就是一個(gè)普普通通的對象罷了,只不過這個(gè)對象被賦予了一些特殊的功能,讓我們來了解一下他吧!

【我們接下來都是在entry.js里面創(chuàng)建的那個(gè)Vue對象上面進(jìn)行實(shí)驗(yàn)的】

一個(gè)Vue實(shí)例對象創(chuàng)建的方法如下:

var vm=new Vue({
  //一堆配置
});

因此,接下來要說的就是一些常用的配置(不是全部,比較特殊的以后應(yīng)該會說,畢竟開始就全部,我怕彼此心都太累了)。

Vue實(shí)例對象基本配置

【1】el:選擇器| DOM結(jié)點(diǎn)

在我們的項(xiàng)目中,我們配置的是:

el:'#root'

這是一個(gè)字符串,有點(diǎn)類似CSS選擇器,它會使用查找到的結(jié)點(diǎn)作為管理區(qū)域(當(dāng)然還有別的CSS選擇器也可以)。

除此之外,你還可以直接傳遞一個(gè)結(jié)點(diǎn),比如現(xiàn)在我們修改一下代碼:

el: document.getElementById('root')

這樣也是可以了,你可以試試。

【2】render:(createElement:()=>VNode)=>VNode

上面的是ES6的箭頭函數(shù)寫法,舉個(gè)栗子:

((x,y)=>x+y)(1,2)

上面ES6的寫法等同于下面ES5的寫法:

(function(x,y){
  return x+y;
})(1,2);

簡單的說就是:(x,y)=>x+y就表示一個(gè)有二個(gè)參數(shù)x和y,返回x+y的函數(shù),因此上面的函數(shù)用ES5的寫法就是:

function(createElement){
  //createElement是一個(gè)函數(shù),返回類型為VNode
  //這個(gè)函數(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);
}

是不是很清晰了,說白了,就是一個(gè)最后返回值是VNode的函數(shù)。

因此看見節(jié)點(diǎn)這二個(gè)字,應(yīng)該可以理解頁面為什么顯示的是App里面的模板了吧,如何路由調(diào)整為什么配置的是.vue文件大概也有點(diǎn)感覺了吧。

【3】router:VueRouter

這個(gè)比較容易理解,就是知道使用的路由配置是什么,由于項(xiàng)目中是:

router:router

看著很奇怪,我們稍微修改一下:

//上面的import routerObj from './router';這一句要跟著修改一下
router: routerObj

基本的就到這里,就三個(gè),別的屬性因?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,
  //啟動(dòng)組件
  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)建前到最后死亡,在各個(gè)階段狀態(tài)改變的時(shí)候,都提供了一個(gè)鉤子方法,你可以注冊一下,如果你希望在特定狀態(tài)改變的時(shí)候干點(diǎn)什么的話。

到這里,基本上Vue對象實(shí)例應(yīng)該比較清楚了吧?看看我們的代碼,應(yīng)該只有那幾個(gè).vue的文件里面的東西沒有說清楚了(本文就是把前面寫過的代碼都說清楚,后面就可以一個(gè)新知識點(diǎn)接著一個(gè)的來豐富項(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>

三個(gè)地方,分工明確:模板 + 控制 + 樣式

接下來我們說明配置中常用的選項(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。

其返回了一個(gè)鍵值對(還有別的寫法,推薦你這樣寫,因?yàn)檫@里如果"初始化數(shù)據(jù)"這幾個(gè)字是變量,這種寫法形成了閉包,是安全的),在這里就是給當(dāng)前組件對象是data里面添加了一個(gè)justDoIt的數(shù)據(jù),然后上面或者別的地方才可以用,他就是干了這事情。

【2】methods

接著,我們添加一下methods屬性:

methods: {
  doIt() {
   alert(this.justDoIt);
  }
}

其實(shí)methods和data類似,只不過是用來添加的不是數(shù)據(jù),而是方法,因此,你現(xiàn)在可以在模板里面添加下面代碼來調(diào)用這個(gè)方法(記住,添加的全部代碼必須由一個(gè)標(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

這個(gè)屬性是專門用來注冊監(jiān)聽前面data里面注冊的值改變的時(shí)候觸發(fā)的方法集合,比如你添加下面的代碼:

watch: {
  justDoIt: function(newval, oldval) {
   console.log("justDoIt改變了,新值為:" + newval + ",舊值為:" + oldval);
  }
 }

如何你運(yùn)行一下,打開控制臺,修改輸入框的值的時(shí)候,是不是控制臺時(shí)刻打印了這句話。

【4】computed

這個(gè)叫做計(jì)算屬性,前面一篇文章說過了,不清楚的看看PageOne.vue,應(yīng)該可以明白。

簡單的說就是,它用到的data里面的值改變的時(shí)候,自己會重新計(jì)算。

生命周期
和Vue對象一樣,也有類似的生命周期鉤子,你可以試試,這里就隨便提一下。

總結(jié)

說到這里,VUE應(yīng)該是入門了,后面開始,就會針對一個(gè)個(gè)小點(diǎn)來說明,祝你好運(yùn)!

相關(guān)文章

  • 父子組件生命周期及子組件獲取數(shù)據(jù)傳值問題剖析

    父子組件生命周期及子組件獲取數(shù)據(jù)傳值問題剖析

    這篇文章主要介紹了父子組件生命周期及子組件獲取數(shù)據(jù)問題剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • vue+elementUI(el-upload)圖片壓縮,默認(rèn)同比例壓縮操作

    vue+elementUI(el-upload)圖片壓縮,默認(rèn)同比例壓縮操作

    這篇文章主要介紹了vue+elementUI(el-upload)圖片壓縮,默認(rèn)同比例壓縮操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue3.0靜態(tài)文件存放路徑與引用方式

    Vue3.0靜態(tài)文件存放路徑與引用方式

    這篇文章主要介紹了Vue3.0靜態(tài)文件存放路徑與引用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue 使用localstorage實(shí)現(xiàn)面包屑的操作

    vue 使用localstorage實(shí)現(xiàn)面包屑的操作

    這篇文章主要介紹了vue 使用localstorage實(shí)現(xiàn)面包屑的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue.js實(shí)現(xiàn)的計(jì)算器功能完整示例

    Vue.js實(shí)現(xiàn)的計(jì)算器功能完整示例

    這篇文章主要介紹了Vue.js實(shí)現(xiàn)的計(jì)算器功能,結(jié)合完整實(shí)例形式分析了vue.js響應(yīng)鼠標(biāo)事件實(shí)現(xiàn)基本的數(shù)值運(yùn)算相關(guān)操作技巧,可實(shí)現(xiàn)四則運(yùn)算及乘方、開方等功能,需要的朋友可以參考下
    2018-07-07
  • Vue中設(shè)置el-select的高度不生效問題及解決方案

    Vue中設(shè)置el-select的高度不生效問題及解決方案

    文章介紹了如何使用ElementUI框架中的el-select組件,并解決設(shè)置其高度不生效的問題,在Vue2.x中,使用/deep/關(guān)鍵字可以穿透組件作用域修改樣式;在Vue2.6+到Vue3初期,推薦使用::v-deep關(guān)鍵字;在最新的Vue3和構(gòu)建工具中,推薦使用:deep()偽類來代替::v-deep
    2025-01-01
  • Vue配置proxy代理接口報(bào)錯(cuò)2007 bad domain的解決

    Vue配置proxy代理接口報(bào)錯(cuò)2007 bad domain的解決

    本文主要介紹了Vue配置proxy代理接口報(bào)錯(cuò)2007 bad domain的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Vue extend學(xué)習(xí)示例講解

    Vue extend學(xué)習(xí)示例講解

    這篇文章主要介紹了Vue.extend使用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09
  • vue實(shí)現(xiàn)點(diǎn)擊復(fù)制到粘貼板

    vue實(shí)現(xiàn)點(diǎn)擊復(fù)制到粘貼板

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)點(diǎn)擊復(fù)制到粘貼板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼

    element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼

    這篇文章主要介紹了element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論

金寨县| 六盘水市| 江门市| 农安县| 万山特区| 汤原县| 靖西县| 射阳县| 阿合奇县| 哈巴河县| 邢台县| 巴里| 崇左市| 峨边| 峨边| 芦山县| 大渡口区| 延川县| 曲松县| 福泉市| 神农架林区| 尼勒克县| 铜鼓县| 体育| 连平县| 兴和县| 阜康市| 青岛市| 新平| 武平县| 洛川县| 墨脱县| 扶风县| 济南市| 维西| 塘沽区| 日照市| 汝南县| 德庆县| 勐海县| 江孜县|