用腳本進行DOM操作的代價很昂貴。
有個貼切的比喻冶伞,把 DOM 和 JavaScript 各自想象為一個島嶼新症,它們之間用收費橋梁連接,js 每次訪問 DOM响禽,都要途徑這座橋徒爹,并交納“過橋費”,訪問 DOM 的次數(shù)越多芋类,費用也就越高隆嗅。 因此,推薦的做法是盡量減少過橋的次數(shù)侯繁,努力待在 ECMAScript 島上胖喳。因為這個原因 react 的虛擬 dom 就顯得難能可貴了。
目前所有的框架都是走的 數(shù)據(jù)決定視圖 的路線贮竟,react 也是這樣丽焊,Dom 的狀態(tài)由 props和state 的值決定,不過它創(chuàng)造了 虛擬dom 并且將它們儲存起來咕别,每當狀態(tài)發(fā)生變化的時候就會創(chuàng)造新的虛擬節(jié)點和以前的進行對比技健,讓變化的部分進行渲染。整個過程沒有了獲取惰拱、操作dom節(jié)點的步驟雌贱,只有一個渲染的過程,所以 react 就是一個ui框架偿短。