用腳本進行DOM操作的代價很昂貴。
有個貼切的比喻,把 DOM 和 JavaScript 各自想象為一個島嶼,它們之間用收費橋梁連接,js 每次訪問 DOM,都要途徑這座橋,并交納“過橋費”,訪問 DOM 的次數越多,費用也就越高。 因此,推薦的做法是盡量減少過橋的次數,努力待在 ECMAScript 島上。因為這個原因 react 的虛擬 dom 就顯得難能可貴了。
目前所有的框架都是走的 數據決定視圖 的路線,react 也是這樣,Dom 的狀態由 props和state 的值決定,不過它創造了 虛擬dom 并且將它們儲存起來,每當狀態發生變化的時候就會創造新的虛擬節點和以前的進行對比,讓變化的部分進行渲染。整個過程沒有了獲取、操作dom節點的步驟,只有一個渲染的過程,所以 react 就是一個ui框架。