vue知識(shí)點(diǎn)總結(jié)(二)

組件基礎(chǔ)

// 定義一個(gè)名為 button-counter 的新組件
Vue.component('button-counter', {
  data: function () {
    return {
      count: 0
    }
  },
  template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
})

組件是可復(fù)用的 Vue 實(shí)例们镜,且?guī)в幸粋€(gè)名字:在這個(gè)例子中是 <button-counter>结蟋。我們可以在一個(gè)通過(guò) new Vue 創(chuàng)建的 Vue 根實(shí)例中砸琅,把這個(gè)組件作為自定義元素來(lái)使用:

<div id="components-demo">
  <button-counter></button-counter>
</div>

一個(gè)組件也擁有data炕置、methods诚些、computed、watch這些屬性氢哮,但一個(gè)組件里袋毙,data必須是一個(gè)函數(shù),data里的數(shù)據(jù)必須通過(guò)return返回冗尤。

一個(gè)組件必須只能有一個(gè)根元素听盖,所以需要將組件包裹在一個(gè)父級(jí)的div容器里。

組件的注冊(cè)

組件的全局注冊(cè)

Vue.component('my-component-name', {
  // ... 選項(xiàng) ...
})

組件的局部注冊(cè)

import ComponentA from './ComponentA.vue'

export default {
  components: {
    ComponentA
  },
  // ...
}

new Vue({
  el: '#app',
  components: {
    'component-a': ComponentA,
    'component-b': ComponentB
  }
})

組件模板

//以VUE為后綴名的文件裂七,有如下模板
<template>
  <div></div>
</template>

<script>
</script>

<style>
</style>

父子組件傳值

父組件向子組件傳值皆看,是通過(guò)屬性來(lái)傳遞的。prop是你可以在組件上注冊(cè)的一些自定義特性背零,當(dāng)一個(gè)值傳遞給一個(gè)prop特性的時(shí)候腰吟,它就變成了那個(gè)組件實(shí)例上的一個(gè)屬性。當(dāng)prop注冊(cè)之后徙瓶,就可以把數(shù)據(jù)作為一個(gè)自定義特性傳遞進(jìn)來(lái)毛雇。

//父組件發(fā)送數(shù)據(jù)
<blog-post title="My journey with Vue"></blog-post>
<blog-post title="Blogging with Vue"></blog-post>
<blog-post title="Why Vue is so fun"></blog-post>
//子組件接受數(shù)據(jù)
Vue.component('blog-post', {
  props: ['title'],
  template: '<h3>{{ title }}</h3>'
})

子組件向父組件傳值,是通過(guò)事件觸發(fā)的方式來(lái)傳遞的:

1.綁定
   methods:{
    handleEvent:function(msg){}
   }
   <son @customEvent="handleEvent"></son>
2.觸發(fā)
子組件內(nèi)部:
this.$emit(‘customEvent’,100);

ref是可以讓父組件得到子組件中的數(shù)據(jù)和方法:

 1.指定ref屬性
    <son ref="mySon"></son>

 2.根據(jù)ref得到子組件實(shí)例
    this.$refs.mySon

parent可以得到父組件的實(shí)例:

this.$parent得到父組件的實(shí)例

非父子組件間通信

兄弟組件通信:
    1.var bus = new Vue();
    2.接收方
    bus.$on('eventName',function(msg){})
    3.發(fā)送方
    bus.$emit('eventName',123);

自定義指令

創(chuàng)建和使用
 Vue.directive('change',{
    bind:function(el,bindings){
    //首次調(diào)用
    },
    update:function(el,bindings){
    //只要是有數(shù)據(jù)變化侦镇,都會(huì)調(diào)用
    },
    unbind:function(){
    //解綁
    }
 })
 <any v-change="count"></any>

鉤子函數(shù):

一個(gè)指令定義對(duì)象可以提供如下幾個(gè)鉤子函數(shù) (均為可選):

bind:只調(diào)用一次灵疮,指令第一次綁定到元素時(shí)調(diào)用。在這里可以進(jìn)行一次性的初始化設(shè)置壳繁。

inserted:被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用 (僅保證父節(jié)點(diǎn)存在震捣,但不一定已被插入文檔中)荔棉。

update:被綁定于元素所在的模板更新時(shí)調(diào)用,而無(wú)論綁定值是否變化蒿赢。通過(guò)比較更新前后的綁定值江耀,可以忽略不必要的模板更新。

componentUpdated:被綁定元素所在模板完成一次更新周期時(shí)調(diào)用诉植。

unbind:只調(diào)用一次祥国,指令與元素解綁時(shí)調(diào)用。

接下來(lái)我們來(lái)看一下鉤子函數(shù)的參數(shù) (即 el晾腔、binding舌稀、vnode 和 oldVnode)。

自定義指令中傳遞的三個(gè)參數(shù):

el: 指令所綁定的元素灼擂,可以用來(lái)直接操作DOM壁查。
binding: 一個(gè)對(duì)象,包含指令的很多信息剔应。
vnode: Vue編譯生成的虛擬節(jié)點(diǎn)睡腿。

過(guò)濾器

1.創(chuàng)建
   Vue.filter(
    'myFilter',
    function(myInput){
       //myInput是在調(diào)用過(guò)濾器時(shí),管道前表達(dá)式執(zhí)行的結(jié)果
       //針對(duì)myInput峻贮,按照業(yè)務(wù)需求做處理
       //返回
       return '處理后的結(jié)果'
    })

2.使用
    <any>{{expression | myFilter}}</any>

在調(diào)用過(guò)濾器的時(shí)候席怪,完成參數(shù)的發(fā)送和接受

1.發(fā)送
<any>{{expression | myFilter(參數(shù)1,參數(shù)2)}}</any>

2.接受
Vue.filter('myFilter',function(myInput纤控,參數(shù)1挂捻,參數(shù)2){
    return '處理后的結(jié)果'
})

Vue生命周期

什么是vue的生命周期

指的是實(shí)例從創(chuàng)建到銷(xiāo)毀的過(guò)程,就是生命周期船万。也就是從開(kāi)始創(chuàng)建刻撒、初始化數(shù)據(jù)、編譯模板耿导、掛載Dom→渲染声怔、更新→渲染、卸載等一系列過(guò)程舱呻,我們稱這是 Vue 的生命周期醋火。

生命周期的作用

生命周期中有多個(gè)鉤子函數(shù),讓我們?cè)诳刂普麄€(gè)Vue實(shí)例的過(guò)程時(shí)更容易形成好的邏輯狮荔。

總共有八個(gè)階段也就是八個(gè)鉤子函數(shù)

創(chuàng)建前/后, 載入前/后,更新前/后,銷(xiāo)毀前/銷(xiāo)毀后

頁(yè)面第一次加載的時(shí)候會(huì)觸發(fā)beforeCreate, created, beforeMount, mounted 這幾個(gè)鉤子胎撇,DOM 渲染在 mounted 中就完成

每個(gè)周期的具體場(chǎng)景

  1. beforeCreate

    在實(shí)例初始化之后介粘,數(shù)據(jù)觀測(cè)(data observer) 和 event/watcher 事件配置之前被調(diào)用殖氏。

  2. created

    實(shí)例已經(jīng)創(chuàng)建完成之后被調(diào)用。在這一步姻采,實(shí)例已完成以下的配置:
    數(shù)據(jù)觀測(cè)(data observer)雅采,屬性和方法的運(yùn)算,watch/event 事件回調(diào)。然而婚瓜,掛載階段還沒(méi)開(kāi)始宝鼓,$el 屬性目前不可見(jiàn)。

  3. beforeMount

    在掛載開(kāi)始之前被調(diào)用:相關(guān)的 render 函數(shù)首次被調(diào)用巴刻。

  4. mounted

    el 被新創(chuàng)建的 vm.el 替換愚铡,并掛載到實(shí)例上去之后調(diào)用該鉤子。如果 root 實(shí)例掛載了一個(gè)文檔內(nèi)元素胡陪,當(dāng) mounted 被調(diào)用時(shí) vm.el 也在文檔內(nèi)沥寥。

  5. beforeUpdate

    數(shù)據(jù)更新時(shí)調(diào)用,發(fā)生在虛擬 DOM 重新渲染和打補(bǔ)丁之前柠座。你可以在這個(gè)鉤子中進(jìn)一步地更改狀態(tài)邑雅,這不會(huì)觸發(fā)附加的重渲染過(guò)程。

  6. updated

由于數(shù)據(jù)更改導(dǎo)致的虛擬 DOM妈经,重新渲染和打補(bǔ)丁淮野,在這之后會(huì)調(diào)用該鉤子。

當(dāng)這個(gè)鉤子被調(diào)用時(shí)吹泡,組件 DOM 已經(jīng)更新骤星,所以你現(xiàn)在可以執(zhí)行依賴于 DOM 的操作。然而在大多數(shù)情況下爆哑,你應(yīng)該避免在此期間更改狀態(tài)妈踊,因?yàn)檫@可能會(huì)導(dǎo)致更新無(wú)限循環(huán)。該鉤子在服務(wù)器端渲染期間不被調(diào)用泪漂。

  1. beforeDestroy

    實(shí)例銷(xiāo)毀之前調(diào)用廊营。在這一步,實(shí)例仍然完全可用萝勤。

  2. destroyed

    Vue 實(shí)例銷(xiāo)毀后調(diào)用露筒。調(diào)用后,Vue 實(shí)例指示的所有東西都會(huì)解綁定敌卓,所有的事件監(jiān)聽(tīng)器會(huì)被移除慎式,所有的子實(shí)例也會(huì)被銷(xiāo)毀。 該鉤子在服務(wù)器端渲染期間不被調(diào)用趟径。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瘪吏,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蜗巧,更是在濱河造成了極大的恐慌掌眠,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,835評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幕屹,死亡現(xiàn)場(chǎng)離奇詭異蓝丙,居然都是意外死亡级遭,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評(píng)論 2 383
  • 文/潘曉璐 我一進(jìn)店門(mén)渺尘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挫鸽,“玉大人,你說(shuō)我怎么就攤上這事鸥跟《迹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,481評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵医咨,是天一觀的道長(zhǎng)蚂夕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)腋逆,這世上最難降的妖魔是什么婿牍? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,303評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮惩歉,結(jié)果婚禮上等脂,老公的妹妹穿的比我還像新娘。我一直安慰自己撑蚌,他們只是感情好上遥,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,375評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著争涌,像睡著了一般粉楚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亮垫,一...
    開(kāi)封第一講書(shū)人閱讀 49,729評(píng)論 1 289
  • 那天模软,我揣著相機(jī)與錄音,去河邊找鬼饮潦。 笑死燃异,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的继蜡。 我是一名探鬼主播回俐,決...
    沈念sama閱讀 38,877評(píng)論 3 404
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼稀并!你這毒婦竟也來(lái)了仅颇?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,633評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤碘举,失蹤者是張志新(化名)和其女友劉穎忘瓦,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體殴俱,經(jīng)...
    沈念sama閱讀 44,088評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡政冻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,443評(píng)論 2 326
  • 正文 我和宋清朗相戀三年枚抵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了线欲。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片明场。...
    茶點(diǎn)故事閱讀 38,563評(píng)論 1 339
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖李丰,靈堂內(nèi)的尸體忽然破棺而出苦锨,到底是詐尸還是另有隱情,我是刑警寧澤趴泌,帶...
    沈念sama閱讀 34,251評(píng)論 4 328
  • 正文 年R本政府宣布舟舒,位于F島的核電站,受9級(jí)特大地震影響嗜憔,放射性物質(zhì)發(fā)生泄漏秃励。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,827評(píng)論 3 312
  • 文/蒙蒙 一吉捶、第九天 我趴在偏房一處隱蔽的房頂上張望夺鲜。 院中可真熱鬧,春花似錦呐舔、人聲如沸币励。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,712評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)食呻。三九已至,卻和暖如春澎现,著一層夾襖步出監(jiān)牢的瞬間仅胞,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,943評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工剑辫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饼问,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,240評(píng)論 2 360
  • 正文 我出身青樓揭斧,卻偏偏與公主長(zhǎng)得像莱革,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子讹开,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,435評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • # 傳智播客vue 學(xué)習(xí)## 1. 什么是 Vue.js* Vue 開(kāi)發(fā)手機(jī) APP 需要借助于 Weex* Vu...
    再見(jiàn)天才閱讀 3,530評(píng)論 0 6
  • 每個(gè) Vue 應(yīng)用都是通過(guò)用 Vue 函數(shù)創(chuàng)建一個(gè)新的 Vue 實(shí)例開(kāi)始的: 實(shí)例生命周期鉤子 每個(gè) Vue 實(shí)例...
    Timmy小石匠閱讀 1,372評(píng)論 0 11
  • vue概述 在官方文檔中旦万,有一句話對(duì)Vue的定位說(shuō)的很明確:Vue.js 的核心是一個(gè)允許采用簡(jiǎn)潔的模板語(yǔ)法來(lái)聲明...
    li4065閱讀 7,191評(píng)論 0 25
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容闹击,還有我對(duì)于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,046評(píng)論 0 29
  • 1.3Python語(yǔ)言發(fā)展過(guò)程 Python語(yǔ)言 1成艘、Python譯為蟒蛇赏半; 2贺归、Python語(yǔ)言的擁有者是Pyt...
    追夢(mèng)者Every閱讀 355評(píng)論 0 0