前沿
- 虛擬dom這個(gè)東東其實(shí)我之前也不知道,之前一直以為是因?yàn)関ue等的這些mvvm框架就是因?yàn)閿?shù)據(jù)驅(qū)動(dòng)頁(yè)面,減少了大量的dom操作,所以才會(huì)性能更好。
- 知道又一次去面試,面試官問到知道為什么vue等的這些mvvm框架比傳統(tǒng)的操作dom渲染頁(yè)面要快么?我回答的就是第一條,他說不全是,不過最后還是跟我說了,回去了解一下虛擬dom
- 所以才回去就趕緊看了看,現(xiàn)在有空,趕緊整理出來
- 如果后期能理解更深,會(huì)持續(xù)更新的。
我也是了解之后才發(fā)現(xiàn)vue官網(wǎng)中有提出虛擬dom的概念,只不過是自己沒有當(dāng)回事罷了。
什么是虛擬dom
文檔對(duì)象模型或DOM定義了一個(gè)接口,該接口允許JavaScript之類的語言訪問和操作HTML文檔。元素由樹中的節(jié)點(diǎn)
表示,并且接口允許我們操縱它們。但是此接口需要付出代價(jià),大量非常頻繁的DOM操作會(huì)使頁(yè)面速度變慢每個(gè)元素都是一個(gè)節(jié)點(diǎn),每段文字也是一個(gè)節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)就是頁(yè)面的額一部分,就像家譜一樣,每個(gè)節(jié)點(diǎn)都有孩子節(jié)點(diǎn)。
虛擬dom就是為了解決操作真是dom帶來的性能問題而出現(xiàn)的,所以說,
虛擬dom就是用js對(duì)象模擬真實(shí)的dom節(jié)點(diǎn),也就是將所有的更新dom的操作先全部反映在js對(duì)象上(虛擬dom上)
操作內(nèi)存中的js對(duì)象顯然速度要快很多,等更新完成后,再將最終的js對(duì)象映射到真是的dom上,交由瀏覽器去繪制頁(yè)面。
-
上邊所說的js對(duì)象模擬真實(shí)的dom節(jié)點(diǎn)也就是官網(wǎng)中所說的(虛擬節(jié)點(diǎn)VNode.)
看看官網(wǎng)怎么說
vdom.png 也就是這個(gè)原理大大提高了渲染速度。
