欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React?Virtual?DOM前端框架全面分析

 更新時間:2023年05月23日 09:44:45   作者:陸榮濤  
這篇文章主要為大家介紹了React?Virtual?DOM前端框架全面分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

可能的原因是以前學(xué)習(xí)框架的時候只學(xué)語法和原理不明白,被問到使用框架有什么好處也回答不上來,正是因為這種情況,所以今天要來探討一下Virtual DOM的作用原理。

在了解Virtual DOM之前什么是DOM吧!

DOM是什么?

文件模型(Document Object Model,DOM) HTML、XML 和 SVG 文件的程序介面。它提供了文件(樹)的程序的文件表示方法,并定義了訪問并改變文件架構(gòu)、風(fēng)格和內(nèi)容的方法。(摘取自MDN的部分說明)

由下圖可以知道DOM是樹狀結(jié)構(gòu)從文檔根結(jié)點向下延伸,下面依附了很多節(jié)點

引用MDN的圖紙

我們經(jīng)常利用js來操作DOM更新瀏覽器在更新觸發(fā)畫面的重新聲明,當(dāng)回流時間以及回流(重)這兩個更新機(jī)制。

  • 重繪

畫面元素更換樣式的時候就觸發(fā)(background-color、color…)

  • 回流

更改畫面的操作結(jié)構(gòu)(結(jié)構(gòu)排列)觸發(fā)(更改視窗大小,css屬性:position、width、height…)

很簡單,這是一個很正常的運行原因,它是一個非常重要的播放器就可以只更新需要異動的部分。

Virtual DOM的流程

1、什么東西使用setState()方法的時候,React 會先復(fù)制一個dom(即為Virtual DOM )

2、的改變時,會比對先前的虛擬 DOM 和當(dāng)前的虛擬 DOM 區(qū)別,當(dāng)重新行動組件的不同狀態(tài)

3、Virtual DOM 先用的演算法(diff算出實際的部分,比對之后的不同,再動真實的DOM,有效減少自己的出現(xiàn)),去提高需要更新的效果。

一般這是的html結(jié)構(gòu)

<div id="header">   
  <h1 class="title">蘋果</h1> 
  <p class="content">檸檬</p> 
</div>

這是Virtual DOM的結(jié)構(gòu),是JavaScript模擬出來的物件,會以下面的格式儲存起來

{
    tag: "div",
    props: {
        id: "header"
    },
    children: [
        {
            tag: "h1",
            props: { className: "title" },
            children: ["Apple"]
        }, {
            tag: "p",
            props: { className: "content" },
            children: ["lemon"]
        }
    ]
}

簡單模擬一下虛擬dom的流程

1、createELement :先使用Virtual DOM提供的createELement方法來生成真是DOM

var count = 0;
var tree = render(count);
var rootNode = createElement(tree);
document.body.appendChild(rootNode);

2、當(dāng)count變動時 Virtual DOM進(jìn)行對比 再將差異patch到真實的DOM

count++
var newTree = render(count);
var patches = diff(tree, newTree);
rootNode = patch(rootNode, patches);
tree = newTree;

什么是patch?patch指的是在原有的DOM結(jié)構(gòu)上做異動

關(guān)于diff算法

圖片來源https://www.cronj.com/blog/di...

傳統(tǒng)的diff演算法復(fù)雜度為O(n³) 處理100個節(jié)點對100萬次的比值,Virtual DOM的diff演算算法為O(n)與傳統(tǒng)的差異化預(yù)測下:

1、Virtual DOM比較相同層級的節(jié)點

2、同一層的同一節(jié)點再次出現(xiàn)一個唯一的關(guān)鍵,就是避免移動被再次創(chuàng)建。

3、如果發(fā)現(xiàn)不見了其子節(jié)點也會一并消除,不會再做比對 開發(fā)者只要在數(shù)據(jù)邏輯上運行一次更新機(jī)制全部自動處理。

關(guān)于diff算法的詳細(xì)理解,可以持續(xù)關(guān)注更新。

以上就是React Virtual DOM前端框架全面分析的詳細(xì)內(nèi)容,更多關(guān)于React Virtual DOM前端框架的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • react實現(xiàn)移動端二級路由嵌套詳解

    react實現(xiàn)移動端二級路由嵌套詳解

    這篇文章主要介紹了react移動端二級路由嵌套的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • React?性能優(yōu)化方法總結(jié)

    React?性能優(yōu)化方法總結(jié)

    這篇文章主要介紹了React性能優(yōu)化方法總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • React虛擬列表的實現(xiàn)

    React虛擬列表的實現(xiàn)

    在開發(fā)過程中,總是遇到很多列表的顯示。當(dāng)上數(shù)量級別的列表渲染于瀏覽器,終會導(dǎo)致瀏覽器的性能下降,你可以選擇其他方式避免,本文就介紹了虛擬列表來解決這個問題
    2021-05-05
  • React+Electron快速創(chuàng)建并打包成桌面應(yīng)用的實例代碼

    React+Electron快速創(chuàng)建并打包成桌面應(yīng)用的實例代碼

    這篇文章主要介紹了React+Electron快速創(chuàng)建并打包成桌面應(yīng)用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • react-router-dom的使用說明

    react-router-dom的使用說明

    這篇文章主要介紹了react-router-dom的使用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 詳解React Native 屏幕適配(炒雞簡單的方法)

    詳解React Native 屏幕適配(炒雞簡單的方法)

    React Native 可以開發(fā) ios 和 android 的 app,在開發(fā)過程中,勢必會遇上屏幕適配,這篇文章主要介紹了詳解React Native 屏幕適配(炒雞簡單的方法),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • React組件渲染后對DOM的操作方式

    React組件渲染后對DOM的操作方式

    這篇文章主要介紹了React組件渲染后對DOM的操作方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • react+typescript中使用echarts的實現(xiàn)步驟

    react+typescript中使用echarts的實現(xiàn)步驟

    本文主要介紹了react+typescript中使用echarts的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • react如何獲取URL中參數(shù)

    react如何獲取URL中參數(shù)

    這篇文章主要介紹了react如何獲取URL中參數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • React中的Component組件詳解

    React中的Component組件詳解

    本章節(jié),我們將一起探討 React 中類組件和函數(shù)組件的定義,不同組件的通信方式,以及常規(guī)組件的強化方式,幫助你全方位認(rèn)識 React 組件,從而對 React 的底層邏輯有進(jìn)一步的理解,感興趣的朋友跟隨小編一起看看吧
    2023-06-06

最新評論