_開頭
的的屬性以及$開頭
的屬性beforCreate
beforMount
生成真實dom,關於如何生成真實dom,詳細過程能夠瞅瞅個人上一篇文章:請闡述vue的diff算法,它會建立一個Watcher
進行觀察,傳入一個函數updateComponent,
該函數會運行_render
,獲得當前組件虛擬dom的根節點(vnode),而後把獲得vnode再傳入_updata
函數執行。html
在執行_render
函數的過程當中,會收集全部依賴,未來依賴變化時會從新運行updataComonent
函數vue
在執行_update
函數的過程當中,觸發patch函數,若是當前沒有舊樹,說明這是第一次渲染,它會直接爲當前的虛擬dom樹的每個普通節點生成elm屬性,也就是真實dom。若是存在舊樹,說明以前已經渲染過了,而後會觸發patch函數,進行新舊兩棵樹對比更新處理,隨後讓新樹的節點對應合適的真實dom,這裏就先假設它是第一次渲染。node
若是遇到建立一個組件的vnode,那麼它會進入組件實例化流程,這個流程和建立vue實例流程基本相同,也就是至關於遞歸循環以上步驟,最終會把建立好的組件實例掛載vnode的componentInstance
屬性中,方便複用。算法
這一步完成後,頁面上已經能夠看到東西了。dom
mounted
Watcher
都會從新運行,這裏只考慮updateComponent
函數對應的Watcher
Watcher
會被調度器放到nextTick中運行,也就是微隊列中,這樣是爲了不多個依賴的數據同時改變後被屢次執行。beforeUpdate
updateComponent
函數從新執行ide
在執行_render函數的過程當中,會去掉以前的依賴,畢竟也要考慮v-if
的感覺,從新收集全部依賴,未來依賴變化時會從新運行updateCompontent
函數函數
在執行_updata函數的過程當中,觸發patch
函數,而後新舊兩棵樹進行對比:post
html節點
的對比會致使真實節點被建立、刪除、移動、更新組件
節點的對比一樣會致使組件被建立、刪除、移動、更新當新組件須要被建立
時,進入實例化流程,從第一條再走一遍流程就能夠了spa
當舊組件須要被刪除
時,會調用組件的$destroy
方法,而後觸發生命週期鉤子函數destroyed
代理
當組件屬性更新時,至關於組件的updataComponent函數被從新觸發執行,進入重渲染流程,走一遍重渲染流程就好了
updated
😊 好了, 以上就是個人分享,你們對於vue生命週期
還有其它理解的話能夠在評論區討論鴨~
但願小夥伴們點贊 👍 支持一下哦~ 😘,我會更有動力的 🤞