真實DOM,就是文檔對象類型,在頁面上渲染的每一個節(jié)點都是一個真實DOM結構。
虛擬DOM,就是一個描述描述DOM結構的對象。
在創(chuàng)建虛擬DOM的目的就是為了更好將虛擬節(jié)點渲染到頁面上,虛擬DOM對象的節(jié)點與真實DOM的屬性是一一對應的。
在React中,ReactDOM.render()函數將虛擬DOM節(jié)點插入到真實DOM節(jié)點上,并且渲染到頁面上。
虛擬DOM和真實DOM的區(qū)別:
- 虛擬DOM不會進行重排和重繪,操作真實DOM的時候,會頻繁觸發(fā)重排和重繪;
- 虛擬DOM的總消耗性能為:虛擬DOM的增刪改、真實DOM差異增刪改和重排重繪;真實DOM性能消耗為真實DOM增刪改加上重排重繪;
如果是原生JavaScript來操作DOM,瀏覽器會從構建DOM開始,從頭到尾執(zhí)行一遍流程。比如在操作一次,需要更新10個DOM節(jié)點,那么瀏覽器會執(zhí)行10次流程。
然而通過虛擬DOM來完成的話,同樣的更新10個節(jié)點,虛擬DOM不會馬上操作DOM,而是把10次更新的diff內容保存在本地內存的一個js對象上,最后才把這個js對象轉化為真實DOM。
虛擬DOM與真實DOM的優(yōu)缺點:
真實DOM容易理解,但是開發(fā)效率低,體驗差;文章來源:http://www.zghlxwxcb.cn/news/detail-845635.html
虛擬DOM是使用,提升了開發(fā)效率和體驗,同時實現跨平臺能力,一套代碼多端運行。缺點是在一些性能要求極高的應用中,虛擬DOM無法進行針對性的優(yōu)化。文章來源地址http://www.zghlxwxcb.cn/news/detail-845635.html
到了這里,關于面試題:React的真實DOM和虛擬DOM的區(qū)別的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!