定义 本质上是js对象,是真实dom的抽象,在状态变更的时候,记录新树和旧树的差异,最后把差异更新到真正的dom中执行流程: 1. 将页面的更新反应在js对象(虚拟dom)上 2. 操作内存中的JS对象,速度更快 3. 更新完成后,再将最终的JS对象映射成真实的DOM,交由浏览器去绘制。 作用 无需手动操作dom,解决在代码中操作dom的混乱以及高耦合性、难以维护等问题保证性能下限,优化前端性能,避免多次渲染dom,提高渲染效率跨平台,js对象比dom树更方便跨平台操作,例如服务器渲染、移动端开发等 缺点 无法极致性能优化,毕竟构建了一个新的对象