Vue中有关虚拟DOM的理解

504 阅读1分钟

Vue本质上是使用HTMl的字符串作为模板的,将字符串模板转为AST(抽象语法树),再转为虚拟DOM:

模板 => AST

AST => 虚拟DOM

虚拟DOM => 真实DOM

其中,最消耗性能的是字符串解析: 模板 转为 AST

图解Vue在数据发生改变的时候,都进行了那些操作:

image.png

1、在页面中展示的Html标签是真实的DOM,在内存中有一个虚拟DOM与之对应;虚拟DOm和页面的Dom是一一对应的关系

2、首先,由AST和数据生成一个新的虚拟DOM(render),每次改变一个数据的时候,都会生成一个新的虚拟DOM(新数据的虚拟DOM,只要数据改变,就会生成一个新的虚拟DOM);

3、然后把新的虚拟DOM和页面中的虚拟DOM进行比较(此处使用了diff算法),如果发现和页面的虚拟DOM有不同,就把不同的数据更新到页面的虚拟DOM上;(update)

4、伴随着更新的操作, 页面上的虚拟DOM也会更新到真实DOM中去,就完成了数据的渲染和更新操作!