JS中爲什麼要減少DOM操作?

曾經比較流行的jquery框架主要優點之一:出色的DOM操作的封裝。但是,目前流行的框架中基本上都摒棄了DOM操作的方法。

主要原因大致上都是在說要減少dom層的操作,原因是因爲dom操作慢。

那麼dom操作爲什麼慢?

這就要提及瀏覽器渲染頁面,瀏覽器分爲:渲染引擎和js引擎。

渲染引擎工作:

        1、解析HTML代碼,生產DOM tree。

        2、解析CSS樣式,結合DOM tree生產Render tree(display:none;的結點不會存在Render tree上,最後不會被paint)。

        3、計算Render tree 各個節點的佈局信息,比如box的位置、尺寸、顏色、外形等。

        4、根據計算後的佈局信息,調用瀏覽器的UI引擎進行渲染。

而操作dom會產生幾種動作,極大的影響渲染的效率。其中layout(佈局)和paint(繪製)是最大的。

        1、layout就是佈局變動造成重新計算(耗CPU,有時也很耗內存)。

        2、paint就是調用瀏覽器UI引擎進行渲染展示頁面(耗cpu和內存)。

虛擬DOM

       1、虛擬DOM不會進行排版與重繪操作。

       2、虛擬DOM進行頻繁修改,然後一次性比較並修改真實DOM中需要改的部分,最後並在真實DOM中進行排版與重繪,減少過多DOM節點排版與重繪,減少過多DOM節點排版與重繪損耗。

       3、真實DOM頻繁排版與重繪的效率是相當低的。

       4、虛擬DOM有效降低大面積(真實DOM節點)的重繪與排版,因爲最終與真實DOM比較差異,可以只渲染局部。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章