react虛擬dom的用處:1、提升react程式碼效能,虛擬DOM是一個js對象,創建一個js對象消耗的效能和創建一個真實DOM要小很多,把創建真實DOM替換為創建虛擬DOM就會有極大的效能上的提升;2、實現跨端應用,在瀏覽器端是將虛擬DOM轉換為一個個的瀏覽器DOM節點,也可以將他轉換為原生應用的元件來實現跨端應用。
本教學操作環境:Windows10系統、react17.0.1版、Dell G3電腦。
1.極大的提升了性能
2.它使得跨端應用( React Native )得以實現。在瀏覽器端是將虛擬DOM轉換為一個個的瀏覽器DOM節點。也可以將他轉換為原生應用的元件,跨段應用程式就實現了。
為什麼能提升性能
如果沒有虛擬DOM,那麼就會直接創建真實的DOM,每次資料改變就會去創建一個真實的DOM,然後真實的DOM比較,再去修改真實的DOM,創建真實DOM是需要消耗很多性能的(因為JS產生DOM樹會呼叫web application等級的API,這種等級的API效能損耗是很大的),這樣就會非常消耗效能。
有了虛擬DOM就不一樣了,虛擬DOM是一個js對象,創建一個js對象消耗的性能和創建一個真實DOM要小很多,把創建真實DOM替換為創建虛擬DOM就會有極大的性能上的提升。
虛擬DOM
虛擬DOM是js對象
<div id='abc'><span>hello world</span></div>//真實DOM['div', {id: 'abc'}, ['span', {}, 'hello world' ]]//虛擬DOM頁面載入和更新過程
1.state數據
2.jsx模板
3.資料+ 範本產生虛擬DOM
4.用虛擬DOM來產生真實DOM
5.state發生變化
6.資料+ 範本產生新的虛擬DOM
7.比較原始的虛擬DOM和新的虛擬DOM(diff演算法)
8.直接操作DOM,改變不一樣的地方
擴展知識:
虛擬DOM的目的是什麼?
為了實現按頁面中DOM元素的高效更新;
在傳統的Web 應用中,我們往往會把資料的變化即時更新到使用者介面中,於是每次資料的微小變動都會造成DOM 樹的重新渲染。
虛擬DOM的目的是將所有操作累積起來,統計計算出所有的變更後,統一更新一次DOM。
極大的提升了性能
它使得跨端應用( React Native )得以實現。在瀏覽器端是將虛擬DOM轉換為一個個的瀏覽器DOM節點。也可以將他轉換為原生應用的元件,跨段應用程式就實現了。
DOM和虛擬DOM的差別
1,虛擬DOM不會進行排版與重繪操作
2,虛擬DOM進行頻繁修改,然後一次比較並修改真實DOM中需要改的部分(注意!),最後並在真實DOM中進行排版與重繪,減少過多DOM節點排版與重繪損耗
3,真實DOM頻繁排版與重繪的效率是相當低的
4,虛擬DOM有效降低大面積(真實DOM節點)的重繪與排版,因為最終與真實DOM比較差異,可以只渲染局部