1. 程式人生 > 其它 >vue2渲染總結

vue2渲染總結

渲染原理: 虛擬dom + diff演算法, 實現按需更新,提升dom更新效率

一: 什麼是虛擬dom,一個js物件,用js物件來模擬一個真實dom;

虛擬dom工作流:

1-  根據初始dom生成舊虛擬dom: oldVnode,  缺點一所以首屏載入會慢一些

2- 根據修改後的dom結構生成一個新的虛擬dom: newVnode     缺點二新的虛擬dom幾乎都變更了,diff演算法執行就無意義的浪費時間

3- diff演算法對比: 找出需要變更的dom, 執行渲染

     a:參考diff演算法實現原理

 

二:瀏覽器渲染原理

1-  重排: 那張圖

1-  重繪:搞一張圖,流程

1-  js單執行緒, 瀏覽器多執行緒;  

1-  每一次事件迴圈後,瀏覽器都會有一個ui渲染過程;  觸發的dom操作都會放到非同步忍睹佇列

     瀏覽器做了優化,一段時間內頻繁的觸發dom操作不會立即執行,60hz的頻率去更新檢視;  但還是難免有一定次數的重排;    所以用虛擬dom來做一次優化,無論多少次更改,都會對映到新的虛擬dom上, 然後新舊虛擬dom的diff

     然後渲染,一次渲染就會操作一次真實的dom結構,從而減少了重排,提升頁面渲染效率;   還有虛擬dom是在記憶體中,操作記憶體在虛擬dom更快;記憶體中操作真實dom就慢? 因為dom結構複雜?

1-  巨集任務、微任務

 

 

疑問:

1- 為啥要有虛擬dom,為啥不用真實dom物件

      a:因為真實dom屬性多? 還有原型鏈?  體積大,  所以要簡化!!!   snabdom為啥出來?

      b:虛擬dom自定義,自定義靈活度高, 沒有侵入?

2- 舊虛擬dom啥時候生成的?  vue-template-compiler

      a:專案首次載入的時候, 頁面開啟的時候, 虛擬dom會快取不? 瀏覽器頁籤切換的時候?

3- 瀏覽器渲染原理

4- jquery時代頁面渲染?  jquery專案前後端時代;  前後端分離時代

 

 

 

 

 

 

 

 

 

參考:

1- 微信收藏文章

2- vue原始碼

3- b站視訊