網站首頁 編程語言 正文
在之前的文章中講過很多相關Vnode和虛擬DOM的內容,以及生命周期,簡單地來進行總結一下。
溫故而知新,可以為師矣。
一.什么是虛擬DOM?
簡單地來說是一個JS對象,用來描述文本中DOM的一些信息。當頁面中的數據發生更新的時候會使用到虛擬DOM,我們暫且叫它是Vnode,當頁面渲染的時候也會產生一份Vnode,我們暫且叫他oldVnode。頁面中的數據更新的時候,新舊兩份Vnode會進行對比。通過Diff算法生成一份新的虛擬DOM然后在渲染到頁面上去。很大一部分上節省了性能,這也是Vue的優點,能夠操作Js對象來達到頁面的更新,脫離了直接操作DOM,大大提升了性能,以及開發的成本。
二.什么是真實DOM?
頁面中我們能夠清晰的去看見,獲取。
三.Vue組件渲染的流程和生命周期
Vue的渲染流程:
模板(template)------->編譯----------->AST------------->vnode-------------->真實的DOM
生命周期的流程:
四個階段:
初始化----------------->掛載--------------------->更新--------------------------->銷毀
在以前的文章也分析過:在beforeMount模板已經編譯完成,這樣是最后一次更改數據的機會,此時
有掛載,也不能獲取到真實的DOM,此時也不能獲取到真實DOM,到了Mount階段,編譯完成也能夠獲取道真實DOM,這也對應著Vue的渲染流程。沒
更新:
當頁面中的數據發生了更新,剛開始的真實的DOM對應著一份虛擬的Vnode,更新之后產生的一Vnode,兩個Vnode通過Diff算法,生成一份新的虛擬Dom達到最理想的渲染,此時獲取的DOM還是以前沒更新之前的。
如果想要獲取到最新的可以使用this.$nextTick(()=>{})這個api,來獲取到更新之后的最新DOM。
原文鏈接:https://blog.csdn.net/qq_59076775/article/details/124626213
相關推薦
- 2022-06-17 mongodb?數據塊的遷移流程分析_MongoDB
- 2022-07-21 SpringCache 面向注解開發
- 2023-07-28 el-input 文本域固定高度
- 2022-03-13 .Net6開發winform程序使用依賴注入_C#教程
- 2022-12-05 Django中QuerySet查詢優化之prefetch_related詳解_python
- 2022-05-01 Python?數據可視化神器Pyecharts繪制圖像練習_python
- 2023-02-10 一文教會你用Python實現pdf轉word_python
- 2023-02-25 C++中vector迭代器失效與深淺拷貝問題詳析_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支