簡談對虛擬Dom的理解

2022-02-26 07:00:42 字數 552 閱讀 5595

簡單說一下我自己對虛擬dom的理解。。。。

由於  jquery+es6模板字串(渲染dom)=》真實的渲染  效能巨差

所以 為了提高效能虛擬dom就是把真實的dom轉成js 物件樹 虛擬dom建立以後(也就是componentwillmounted完成的時候 就建立了這個源樹)根據元件內部的state 父元件的props 以及redux 的全域性狀態的更新 導致產生新的js物件樹(就是目標樹) 通過diff比較演算法來比較兩顆樹的不同 把不同的節點在dom樹上渲染一下

diff演算法是逐層比較 發現相同的就保留 發現刪除的就刪除 發現新增的就新增 這層比較把複雜度由o(n^3)降低到o(n^1)這個逐層比較會帶來新的問題 1.如果這個變化比較複雜 2.兄弟節點需要排序插入的時候 這兩種都是低效的  react產生兩個假設 1.兩個相同元件產生類似的dom結構,不同的元件產生不同的dom結構 2.對於同一層次的一組子節點 他們可以通過唯一的id進行區分 事實上這兩個假設成立1. 因為同乙個元件的結構是穩定的 修改狀態時只改變區域性的內容 2.在使用者開發時可以加乙個id進行區分 所以diff演算法是成功的 

對虛擬DOM的理解

什麼是虛擬dom 簡單來說虛擬dom就是用js來模擬dom結構。相對於瀏覽器渲染出來的真是dom。1.記憶體中生成一顆虛擬dom樹 var vdom children 上面就是乙個簡單的虛擬dom,可以將記憶體裡的虛擬dom渲染成真實dom 虛擬dom的作用 當用傳統的api或jquery去操作do...

對vue虛擬dom的理解

1為什麼使用虛擬dom 因為在開發中,操作原生dom是非常消耗效能的,如果某個節點發生改變時,整個容器中的內容都要被重新渲染。而虛擬dom可以很好地解決這個問題。如果一次操作中有10次更新dom的操作,虛擬dom不會立即操作dom,而是將這10次更新的diff內容儲存在本地的乙個js物件中,最終將這...

簡談自己對redux的理解

redux描述 通過 react redux 中的 provider 將store總分支注入根元件,其原理就是所謂的context原始碼如下 export function createprovider storekey store subkey constructor props,context ...