1)什么是虚拟dom?虚拟dom本质上就是一个普通的JS对象,是用来描述视图的,在vue中,每个组件都有一个render函数,每个render函数都会返回一个虚拟dom树,这也就意味着每个组件都对应一棵虚拟DOM树
2)为什么需要虚拟dom?虚拟DOM具有批处理和高效的Diff算法。在vue中,渲染视图会调用render函数,这种渲染不仅发生在组件创建时,同时发生在数据更新时。如果在渲染时,直接使用真实DOM,由于真实DOM的创建、更新会有大量的性能损耗,从而就会极大的降低渲染效率。因此,vue在渲染时,使用虚拟dom来替代真实dom,主要为解决渲染效率的问题。而且无需手动操作 DOM: 我们不再需要手动去操作 DOM,框架会根据虚拟 DOM 和数据双向绑定,帮我们更新视图,极大提高我们的开发效率;跨平台: 虚拟 DOM 本质上是 JavaScript 对象,而 DOM 与平台强相关,虚拟 DOM 可以进行更方便地跨平台操作
3)缺点:首次渲染大量DOM时,由于多了一层虚拟DOM的计算,会比innerHTML插入慢