淺談Vue.js 1.x 和 2.x 實(shí)例的生命周期
在Vue.js中,在實(shí)例化Vue之前,它們都是以HTML的文本形式存在文本編輯器中。當(dāng)實(shí)例化后將經(jīng)歷創(chuàng)建、編譯、銷毀三個(gè)主要階段。
以下是Vue.js 1.x 實(shí)例的生命周期圖示:

Vue.js 1.x 的生命周期鉤子
1. init
在實(shí)例開始初始化時(shí)同步調(diào)用。此時(shí)數(shù)據(jù)觀測、事件和Watcher都尚未初始化。
2. created
在實(shí)例化創(chuàng)建之后同步調(diào)用。此時(shí)實(shí)例已經(jīng)結(jié)束解析選項(xiàng),已建立:數(shù)據(jù)綁定、計(jì)算屬性、方法、Watcher/事件回調(diào),但是還沒有開始DOM編譯,$el還不存在。
3. beforeCompile
在編譯開始前調(diào)用。
4. compiled
在編譯結(jié)束后調(diào)用。此時(shí)所以指令已經(jīng)生效,因而數(shù)據(jù)的變化將觸發(fā)DOM更新,但是不保證$el已插入文檔。
5. ready
在編譯結(jié)束和$el第一次插入文檔后調(diào)用,如在第一次attached鉤子之后調(diào)用。
6. attached
vm.$el 插入 DOM 時(shí)調(diào)用。
7. detached
在 vm.$el 從 DOM 中刪除時(shí)調(diào)用。必須是由指令或?qū)嵗椒▌h除,直接操作 vm.$el 不會觸發(fā)。
8. beforeDestroy
在開始銷毀實(shí)例時(shí)調(diào)用,此時(shí)實(shí)例仍然有功能。
9. destroyed
在實(shí)例被銷毀之后調(diào)用,此時(shí)所有的綁定和實(shí)例的指令已經(jīng)解綁,所有子實(shí)例已經(jīng)被銷毀。
以下是Vue.js 2.x 實(shí)例的生命周期圖示:

Vue.js 2.x 的生命周期鉤子
1. 廢棄ready,新增mounted
在1.x版本中,ready鉤子函數(shù)的調(diào)用時(shí)機(jī)是第一次插入DOM后,但是2.0不一定只執(zhí)行在瀏覽器中,也可能在服務(wù)端渲染,所以廢棄ready并新增mounted鉤子函數(shù),mounted鉤子函數(shù)調(diào)用時(shí)機(jī)在DOM樹生成之后。
2. 廢棄beforeCompile
在1.x版本中,調(diào)用beforeCompile鉤子函數(shù)是在模板編譯前,2.0版本中廢棄并用created代替。
3. 廢棄compiled
在1.x版本中,調(diào)用compiled是在編譯模板之后、DOM創(chuàng)建之前,2.0版本中廢棄并用mounted代替。
4. 廢棄attached
在1.x版本中,調(diào)用attached是在插入DOM時(shí),2.0版本中不一定會創(chuàng)建真實(shí)的DOM,2.0版本廢棄。
5. 廢棄detached
在1.x版本中,調(diào)用detached是移除DOM時(shí),2.0版本中不一定會創(chuàng)建真實(shí)的DOM,2.0版本廢棄。
6. 新增beforeCreate
2.0版本中新增beforeCreate,在實(shí)例初始化之后,數(shù)據(jù)觀察(data observer)和event/watcher事件配置之前被調(diào)用。
7. 新增beforeMount
2.0版本中新增beforeMount,是在Watcher之前、模板編譯成render方法之后調(diào)用,相關(guān)render首次被調(diào)用。該鉤子函數(shù)在服務(wù)器渲染期間不被調(diào)用。
8. 新增beforeUpdate
2.0版本中新增beforeUpdate,是在DOM樹生成之前、虛擬DOM樹生成之后調(diào)用,調(diào)用條件是這個(gè)vm實(shí)例已經(jīng)mounted過。該鉤子函數(shù)在服務(wù)器渲染期間不被調(diào)用。
9. 新增updated
2.0版本中新增updated,在DOM樹生成之后調(diào)用,調(diào)用條件是這個(gè)vm實(shí)例已經(jīng)mounted過。該鉤子函數(shù)在服務(wù)器渲染期間不被調(diào)用。
10. 新增activated
2.0版本中新增activated,在DOM樹生成之后,調(diào)用條件是keep-alive組件。該鉤子函數(shù)在服務(wù)器渲染期間不被調(diào)用。
11. 新增deactivated
2.0版本中新增deactivated,在Vue實(shí)例銷毀時(shí)調(diào)用,調(diào)用條件是keep-alive組件。該鉤子函數(shù)在服務(wù)器渲染期間不被調(diào)用。
以上這篇淺談Vue.js 1.x 和 2.x 實(shí)例的生命周期就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue計(jì)算屬性與監(jiān)視(偵聽)屬性的使用深度學(xué)習(xí)
這篇文章主要介紹了Vue計(jì)算屬性與監(jiān)視(偵聽)屬性的使用,計(jì)算屬性指的是通過一系列運(yùn)算之后,最終得到一個(gè)值,watch監(jiān)視(偵聽)器允許開發(fā)者監(jiān)視數(shù)據(jù)的變化,從而針對數(shù)據(jù)的變化做特定的操作,本文就這兩種屬性給大家詳細(xì)講解,感興趣的朋友一起學(xué)習(xí)吧2022-11-11
Vue手動埋點(diǎn)設(shè)計(jì)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于Vue手動埋點(diǎn)設(shè)計(jì)的相關(guān)資料,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,需要的朋友可以參考下2022-03-03
vue結(jié)合el-dialog封裝自己的confirm二次確認(rèn)彈窗方式
這篇文章主要介紹了vue結(jié)合el-dialog封裝自己的confirm二次確認(rèn)彈窗方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
vue如何使用swiper插件修改左右箭頭的默認(rèn)樣式
這篇文章主要介紹了vue如何使用swiper插件修改左右箭頭的默認(rèn)樣式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue解析Json數(shù)據(jù)獲取Json里面的多個(gè)id問題
這篇文章主要介紹了vue解析Json數(shù)據(jù)獲取Json里面的多個(gè)id問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
vue使用高德地圖根據(jù)坐標(biāo)定位點(diǎn)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue使用高德地圖根據(jù)坐標(biāo)定位點(diǎn)的實(shí)現(xiàn)代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08

