亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

virtual DOM是如何優(yōu)化性能的

Luosunce / 828人閱讀

摘要:當(dāng)數(shù)據(jù)開(kāi)始變化時(shí),如何手動(dòng)操作回想一下,這樣的場(chǎng)景是不是常常見(jiàn)到。是如何操作的首先有一個(gè)數(shù)據(jù)結(jié)構(gòu)和結(jié)構(gòu)相似的對(duì)象,然后用這個(gè)對(duì)象去渲染真正的樹(shù)。兩種渲染的比較為什么通過(guò)會(huì)提高性能呢要知道每一次修改都會(huì)觸發(fā)瀏覽器的重新渲染的流程。

談到virtual DOM 前先來(lái)說(shuō)說(shuō)瀏覽器渲染的流程

瀏覽器接收到html文件,并轉(zhuǎn)換成DOM樹(shù)。如果有css還會(huì)生成css樹(shù)。如果遇到script標(biāo)簽,會(huì)先判斷是async或defer。如果是前者會(huì)并行下載并執(zhí)行js,后者會(huì)先下載,等html解析完后順序執(zhí)行。
當(dāng)構(gòu)建后dom樹(shù)和css樹(shù)后,開(kāi)始構(gòu)建render樹(shù)。這一步就是確定頁(yè)面布局和樣式,在生成render樹(shù)的過(guò)程中瀏覽器就開(kāi)始繪制合成圖層將內(nèi)容顯示在屏幕。
只要dom一更新,以上流程瀏覽器就會(huì)再執(zhí)行一次。

當(dāng)數(shù)據(jù)開(kāi)始變化時(shí),如何手動(dòng)操作DOM?

回想一下,這樣的場(chǎng)景是不是常常見(jiàn)到。一個(gè)列表中有許多條數(shù)據(jù),需要提供一個(gè)按鈕來(lái)控制數(shù)據(jù)的排序;一個(gè)按鈕刪除,一個(gè)按鈕新增甚至還有編輯數(shù)據(jù)。當(dāng)沒(méi)有任何的框架的時(shí)候,就需要我們手動(dòng)的修改DOM結(jié)構(gòu)。給按鈕增加監(jiān)聽(tīng)事件和回調(diào)函數(shù)更新DOM。功能越復(fù)雜,需要增加的事件和維護(hù)的代碼就會(huì)越來(lái)越多,項(xiàng)目也會(huì)越來(lái)越臃腫。

virtual DOM是如何操作的
首先有一個(gè)數(shù)據(jù)結(jié)構(gòu)和DOM結(jié)構(gòu)相似的對(duì)象,然后用這個(gè)對(duì)象去渲染真正的DOM樹(shù)。當(dāng)狀態(tài)發(fā)生改變時(shí),新生成一個(gè)對(duì)象和原來(lái)的對(duì)象比較,發(fā)現(xiàn)有不同的地方,就將改變的地方替換掉相對(duì)應(yīng)的原來(lái)的對(duì)象的地方。

兩種渲染的比較
為什么通過(guò)virtual DOM會(huì)提高性能呢?
要知道每一次修改DOM都會(huì)觸發(fā)瀏覽器的重新渲染的流程。
假設(shè)有一個(gè)頁(yè)面數(shù)據(jù)龐大,需要修改1000條數(shù)據(jù),
直接操作DOM 相當(dāng)于1000瀏覽器重新渲染
然而使用虛擬DOM是先js層面了計(jì)算了1000次,計(jì)算好后在訪問(wèn)一次DOM
在js層面的計(jì)算和直接訪問(wèn)DOM操作相比,簡(jiǎn)直便宜得不行。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104904.html

相關(guān)文章

  • 4、React組件之性能優(yōu)化

    摘要:組件的性能優(yōu)化高德納我們應(yīng)該忘記忽略很小的性能優(yōu)化,可以說(shuō)的情況下,過(guò)早的優(yōu)化是萬(wàn)惡之源,而我們應(yīng)該關(guān)心對(duì)性能影響最關(guān)鍵的另外的代碼。對(duì)多個(gè)組件的性能優(yōu)化當(dāng)一個(gè)組件被裝載更新和卸載時(shí),組件的一序列生命周期函數(shù)會(huì)被調(diào)用。 React組件的性能優(yōu)化 高德納: 我們應(yīng)該忘記忽略很小的性能優(yōu)化,可以說(shuō)97%的情況下,過(guò)早的優(yōu)化是萬(wàn)惡之源,而我們應(yīng)該關(guān)心對(duì)性能影響最關(guān)鍵的另外3%的代碼。...

    陳偉 評(píng)論0 收藏0
  • React 源碼剖析系列 - 不可思議 react diff

    摘要:目前,前端領(lǐng)域中勢(shì)頭正盛,使用者眾多卻少有能夠深入剖析內(nèi)部實(shí)現(xiàn)機(jī)制和原理。當(dāng)發(fā)現(xiàn)節(jié)點(diǎn)已經(jīng)不存在,則該節(jié)點(diǎn)及其子節(jié)點(diǎn)會(huì)被完全刪除掉,不會(huì)用于進(jìn)一步的比較。 目前,前端領(lǐng)域中 React 勢(shì)頭正盛,使用者眾多卻少有能夠深入剖析內(nèi)部實(shí)現(xiàn)機(jī)制和原理。本系列文章希望通過(guò)剖析 React 源碼,理解其內(nèi)部的實(shí)現(xiàn)原理,知其然更要知其所以然。 React diff 作為 Virtual DOM 的加速...

    shuibo 評(píng)論0 收藏0
  • 你不知道Virtual DOM(三):Virtual Dom更新優(yōu)化

    摘要:經(jīng)過(guò)這次優(yōu)化,計(jì)算的時(shí)間快了那么幾毫秒?;诋?dāng)前這個(gè)版本的代碼還能做怎樣的優(yōu)化呢,請(qǐng)看下一篇的內(nèi)容你不知道的四的作用。 歡迎關(guān)注我的公眾號(hào)睿Talk,獲取我最新的文章:showImg(https://segmentfault.com/img/bVbmYjo); 一、前言 目前最流行的兩大前端框架,React和Vue,都不約而同的借助Virtual DOM技術(shù)提高頁(yè)面的渲染效率。那么,什...

    xiongzenghui 評(píng)論0 收藏0
  • 深入React知識(shí)點(diǎn)整理(一)

    摘要:以我自己的理解,函數(shù)式編程就是以函數(shù)為中心,將大段過(guò)程拆成一個(gè)個(gè)函數(shù),組合嵌套使用。越來(lái)越多的跡象表明,函數(shù)式編程已經(jīng)不再是學(xué)術(shù)界的最愛(ài),開(kāi)始大踏步地在業(yè)界投入實(shí)用。也許繼面向?qū)ο缶幊讨螅瘮?shù)式編程會(huì)成為下一個(gè)編程的主流范式。 使用React也滿一年了,從剛剛會(huì)使用到逐漸探究其底層實(shí)現(xiàn),以便學(xué)習(xí)幾招奇技淫巧從而在自己的代碼中使用,寫(xiě)出高效的代碼。下面整理一些知識(shí)點(diǎn),算是React看書(shū)...

    Gilbertat 評(píng)論0 收藏0
  • 一起理解 Virtual DOM

    摘要:具體而言,就是每次數(shù)據(jù)發(fā)生變化,就重新執(zhí)行一次整體渲染。而給出了解決方案,就是。由于只關(guān)注,通過(guò)閱讀兩個(gè)庫(kù)的源碼,對(duì)于的定位有了更深一步的理解。第二個(gè)而且,技術(shù)本身不是目的,能夠更好地解決問(wèn)題才是王道嘛。 前言 React 好像已經(jīng)火了很久很久,以致于我們對(duì)于 Virtual DOM 這個(gè)詞都已經(jīng)很熟悉了,網(wǎng)上也有非常多的介紹 React、Virtual DOM 的文章。但是直到前不久...

    Tangpj 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<