中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

虛擬dom原理指的是什么

發布時間:2021-01-11 13:45:53 來源:億速云 閱讀:305 作者:小新 欄目:互聯網科技

這篇文章給大家分享的是有關虛擬dom原理指的是什么的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

虛擬dom原理: 當用原生js或jquery等庫去操作DOM時,瀏覽器會從構建DOM樹開始講整個流程執行一遍,所以頻繁操作DOM會引起不需要的計算,導致頁面卡頓,影響用戶體驗,而Virtual DOM能很好的解決這個問題。

虛擬dom原理:

1. 為什么需要虛擬DOM

先介紹瀏覽器加載一個網頁需要經歷那些過程;我們只討論頁面解析流程,不考慮網絡請求過程。

瀏覽器內核拿到html文件后,大致分為一下5個步驟:

  • 解析html元素,構建dom 樹

  • 解析CSS,生成頁面css規則樹(Style Rules)

  • 將dom樹 和 css規則樹關聯起來,生成render樹

  • 布局(layout/ reflow),瀏覽器會為Render樹上的每個節點確定在屏幕上的尺寸、位置

  • 繪制Render樹,繪制頁面像素信息到屏幕上,這個過程叫paint

當你用原生js 或jquery等庫去操作DOM時,瀏覽器會從構建DOM樹開始講整個流程執行一遍,所以頻繁操作DOM會引起不需要的計算,導致頁面卡頓,影響用戶體驗。而Virtual DOM能很好的解決這個問題。它用javascript對象表示virtual node(VNode),根據VNode 計算出真實DOM需要做的最小變動,然后再操作真實DOM節點,提高渲染效率。

2. Virtual DOM

虛擬DOM用javascript對象來表示VNode,VNode的結構如下:

虛擬dom原理指的是什么

虛擬節點(vNode)結構

下面是虛擬DOM的算法流程圖:

虛擬dom原理指的是什么

虛擬DOM算法流程圖

React Diff算法

高效的diff算法能夠保證進行對實際的DOM進行最小的變動。但是標準的的 Diff 算法復雜度需要 O(n^3),這顯然無法滿足性能要求。要達到每次界面都可以整體刷新界面的目的,勢必需要對算法進行優化。React里結合 Web 界面的特點做出了兩個簡單的假設,使得 Diff 算法復雜度直接降低到 O(n)。

1. 兩個相同組件產生類似的 DOM 結構,不同的組件產生不同的 DOM 結構;

2. 對于同一層次的一組子節點,它們可以通過唯一的 id 進行區分。

算法上的優化是 React 整個界面 Render 的基礎,保證了整體界面渲染的性能。

不同節點類型的比較

為了在樹之間進行比較,我們首先要能夠比較兩個節點,在 React 中即比較兩個虛擬 DOM 節點,當兩個節點不同時,應該如何處理。這分為兩種情況:(1)節點類型不同 ,(2)節點類型相同,但是屬性不同。

節點類型不同:直接刪除原節點, 插入新節點。

React 的 DOM Diff 算法實際上只會對樹進行逐層比較,兩棵樹只會對同一層次的節點進行比較如下所述。

虛擬dom原理指的是什么

dom樹

React 只會對相同顏色方框內的 DOM 節點進行比較,即同一個父節點下的所有子節點。當發現節點已經不存在,則該節點及其子節點會被完全刪除掉,不會用于進一步的比較。這樣只需要對樹進行一次遍歷,便能完成整個 DOM 樹的比較。

相同類型節點的比較

React 會對屬性進行重設從而實現節點的轉換。

感謝各位的閱讀!關于“虛擬dom原理指的是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙江县| 昌邑市| 湟中县| 洪泽县| 南江县| 永川市| 浏阳市| 凤凰县| 朔州市| 岳池县| 西乌珠穆沁旗| 穆棱市| 秀山| 利辛县| 合阳县| 通河县| 綦江县| 永平县| 靖边县| 松阳县| 新建县| 封丘县| 简阳市| 万安县| 灌云县| 张家川| 卢湾区| 吉隆县| 南部县| 巴东县| 兴隆县| 夏河县| 通城县| 阿拉善右旗| 鄂托克前旗| 黑河市| 天等县| 隆化县| 衢州市| 广汉市| 阿拉善左旗|