Virtual DOM
是一个简单的js对象,是对真实DOM对象的描述,并且跟DOM元素一一对应。最少包含标签名、属性、子元素对象三个属性
Virtual DOM最大的特点是将页面的状态抽象为JS对象,配合不同的渲染工具,使跨平台渲染成为可能。
如React就是借助Virtual实现服务端渲染、浏览器渲染、移动端渲染等功能
此外,在进行页面更新的时候,借助VD,DOM元素的改变可以在内存中进行比较,再结合框架的事务机制将多次比较的结果合并后一次性更新到页面,从而有效地减少页面渲染的次数,提高渲染效率。
我们先来看下页面的更新一般会经过3个阶段。js计算 生成渲染树 绘制页面
通过VD的比较,我们可以将多个操作合并成一个批量的操作,从而减少dom重排的次数,进而缩短了生成渲染树和绘制所花的时间。
至于如何基于VD更有效率的更新dom,是将VD与真实DOM映射
将VD对象构建成真实DOM对象,并展示到页面上
通常有VD diff算法,找出2个VD对象的差异并将更新的元素映射到DOM中