本质上讲,虚拟dom是一个js对象,将页面的状态抽象js对象形式,配合不同渲染工具,可跨平台渲染;通过时间触发,将多次dom页面的修改结果一次性更新,减少渲染次数,减少重绘重排,提高性能。。
虚拟dom是对dom的抽象,涉及最初目的是为了更好的跨平台,如node.js没有dom,要实现ssr(服务端渲染,在ajax出现之前,都是ssr),就是接住虚拟dom。vue通过虚拟dom描述真实dom结构,每次dom结构发生变化前,都会缓存一份,变化时会对新的dom进行比较(通过vue内部封装diff算法进行比较),渲染时只重新渲染改变的部分。
为何要用虚拟dom
现前端基本开发要求就是无需手动操作dom,一方面是因为手动无法保证程序性能(多人开发项目可能出现性能较低的代码),另一方面可以提高开发效率。