1. 程式人生 > 其它 >理解vue虛擬DOM

理解vue虛擬DOM

什麼是虛擬DOM ?

⽤ JavaScript 物件表示 DOM 資訊和結構,更新後使之與真實dom保持同步,同步過程就是協調,核心是diff演算法。

  • DOM 定義了一個介面,該介面允許JavaScript之類的語言訪問和操作HTML文件。元素由樹中的節點表示,並且介面允許我們操縱它們。但是此介面需要付出代價,大量非常頻繁的DOM操作會使頁面速度變慢

  • 每個元素都是一個節點,每段文字也是一個節點,一個節點就是頁面的一部分.

  • 虛擬dom就是為了解決操作真實dom帶來的效能問題而出現的,所以說,

  • 虛擬dom就是用js物件模擬真實的dom節點,也就是將所有的更新dom的操作先全部反映在js物件上(虛擬dom上)

  • 操作記憶體中的js物件顯然速度要快很多,等更新完成後,再將最終的js物件對映到真實的dom上,交由瀏覽器去繪製頁面。

  • 上邊所說的js物件模擬真實的dom節點也就是官網中所說的(虛擬節點VNode.)

為什麼需要虛擬dom?

 虛擬DOM就是為了解決瀏覽器效能問題而被設計出來的。

 DOM操作很慢,輕微的操作都可能導致⻚面重新排版,⾮常耗效能。相對於DOM物件,js物件處理起來更快, 而且更簡單。通過diff演算法對比新舊vdom之間的差異,可以 批量的、最⼩化的執行dom操作,從而提高效能

 例如,若一次操作中有10次更新DOM的動作,虛擬DOM不會立即操作DOM,而是將這10次更新的diff內容儲存到本地一個JS物件中,最終將這個JS物件一次性attch到DOM樹上,再進行後續操作,避免大量無謂的計算量。簡單來說,可以把Virtual DOM 理解為一個簡單的JS物件,並且最少包含標籤名( tag)、屬性(attrs)和子元素物件( children)三個屬性。


注:本文只是對虛擬DOM做一個簡單的講解