Vue基礎-生命周期

Vue生命周期分為四個階段(常用的有8個,實際上vue總共有11個)

第一階段(創建階段)

beforeCreate

在beforeCreate之前,Vue做了兩件事:

1、methods聲明

2、生命周期鉤子函數聲明

created

data數據注入,data數據劫持

1、遍歷遞歸data選項,給每個聲明式變量添加setter/getter

2、把劫持過變量都放在組件實例上

第二階段(掛載階段)

beforeMount

在created之后、beforeMount之前,vue做了下面這些事

1、通過el、template尋找組件的視圖模板(帶有指令的HTML字符串)

2、把找到的template視圖(帶有指令的HTML字符串)編譯成render()函數

mounted

1、根據render()渲染函數,生成“抽象語法樹AST”,再把AST創建成“虛擬DOM(VNode)”(Vnode是真實DOM的一種數據描述,它本質上是json格式的數據)

2、根據VNode創建真實DOM(背后有依賴收集、Watcher工作)把那些聲明式變量都替換成真實數據,DOM渲染完成。

第三階段(更新階段)

beforeUpdate

當被被劫持過的data數據發生變化時,這將進入更新階段

updated

1、當vue上下文中的data發生變化時,使用render()渲染函數再生成一新的Vnode

2、使用大名鼎鼎的Diff運算,patch('old vnode', 'new vnode')找出兩個Vnode之間最小差異

3、notify通過Watcher根據“依賴收集”再次更新真實DOM

為什么要有虛擬DOM這個的“玩意”?

虛擬DOM存在的價值,大大地降低了“jQuery時代下人為尋找DOM變化差異”的不足,最小化地去更新DOM(盡可能地減少了DOM操作)。所以虛擬DOM是MVVM的本質

第四階段(銷毀階段)

beforeDestory

當調用$destroy()或路由切換時,組件進入銷毀階段

destoryed

1、拆卸掉Watcher,所以DOM不可能再發生更新。

2、拆卸掉當前組件的所有子組件,所以這些子組件也都進入銷毀階段

3、卸載掉當前組件中的事件處理器。

常用的幾個階段

created

調接口、開啟ws長連接

mounted

調接口、開啟長連接

開定時器

執行一些與DOM的操作

beforeDestroy

關閉長連接

關閉定時器

清除一些占用內存的緩存數據(vuex、本地存儲數據。。)


vue生命周期流程圖
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容