起初我們?cè)谑褂肑S/JQuery時(shí),不可避免的會(huì)大量操作DOM,而DOM的變化又會(huì)引發(fā)回流或重繪,從而降低頁(yè)面渲染性能。那么怎樣來減少對(duì)DOM的操作呢?此時(shí)虛擬DOM應(yīng)用而生,所以虛擬DOM出現(xiàn)的主要目的就是為了減少頻繁操作DOM而引起回流重繪所引發(fā)的性能問題的!
虛擬DOM(Virtual Dom),起始本質(zhì)上就是一個(gè)JS對(duì)象,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),我們不直接操作真實(shí)DOM,因?yàn)楹馨嘿F,我們?nèi)ゲ僮鬟@個(gè)JS對(duì)象,就不會(huì)觸發(fā)大量回流重繪操作,再加上diff算法,可以找到兩次虛擬DOM之間改變的部分,從而最小量的去一次性更新真實(shí)DOM,而不是頻繁操作DOM,性能得到了大大的提升。
虛擬DOM還有一個(gè)好處,可以渲染到 DOM 以外的平臺(tái),實(shí)現(xiàn) SSR、同構(gòu)渲染這些高級(jí)特性,Weex 等框架應(yīng)用的就是這一特性。