為什么用vue
1.操作dom元素需要把html結(jié)構(gòu)銷毀之后,然后再進(jìn)行重新生成,十分消耗性能
2.虛擬dom,通過(guò)diff算法,減少性能的消耗
vue通過(guò)建立一個(gè)虛擬DOM樹(shù)對(duì)真實(shí)DOM發(fā)生的變化保持追蹤。
一棵真實(shí)DOM樹(shù)的渲染需要先解析CSS樣式和DOM樹(shù),然后將其整合成一棵渲染樹(shù),再通過(guò)布局算法去計(jì)算每個(gè)節(jié)點(diǎn)在瀏覽器中的位置,最終輸出到顯示器上,
而虛擬DOM則可以理解為保存了一棵DOM樹(shù)被渲染之前所包含的所有信息,而這些信息可以通過(guò)對(duì)象的形式一直保存在內(nèi)存中,并通過(guò)JavaScript的操作進(jìn)行維護(hù)。
用傳統(tǒng)jquery操作dom的思想,可以先刪除,然后再插入新的標(biāo)簽
虛擬dom會(huì)如何處理上述問(wèn)題呢?
第一步:通過(guò)樹(shù)的形式保存舊的dom信息,這些信息可能在頁(yè)面第一次加載的時(shí)候被渲染到瀏覽器中,但仍是通過(guò)虛擬dom的方式創(chuàng)建的
第二步:檢測(cè)到數(shù)據(jù)更新,需要更新dom,先在JavaScript中將需要修改的節(jié)點(diǎn)全部修改完成(這個(gè)步驟可以進(jìn)行算法上的優(yōu)化,會(huì)在后面的原理中詳細(xì)說(shuō)明)
第三步:將最終生成的虛擬DOM更新到視圖中去。
需要付出的代價(jià)付出的只是在你的內(nèi)存中需要保存一份可供維護(hù)的數(shù)據(jù)信息