虚拟DOM是什么?
虚拟dom顾名思义就是虚拟的dom对象,它本身就是一个 JavaScript 对象,只不过它是通过不同的属性去描述一个视图结构。
为什么要使用虚拟DOM,有什么好处?
将真实的元素节点抽象化,有效减少直接操作 dom 次数,从而提高程序性能
1.直接操作 dom 是有限制的,比如:clone 操作,如果需要进行 clone 那么需要将其全部内容进行复制,会去额外 clone 一些没有必要的内容,如果将这些操作转移到 JavaScript 对象上,那么就会变得简单了。
2.操作 dom 是代价比较大的操作,频繁的dom操作容易引起页面的重绘和回流,但是通过虚拟dom进行中间处理,可以有效减少直接操作dom的次数,从而减少页面重绘和回流。
3.具备跨平台的优势–由于 Virtual DOM 是以 JavaScript 对象为基础而不依赖真实平台环境,所以使它具有了跨平台的能力,比如说浏览器平台、Node 等。
虚拟DOM怎么生成?
在vue中我们常常会为组件编写模板 - template, 这个模板会被编译器 - compiler编译为渲染函数,在接下来的挂载(mount)过程中会调用render函数,返回的对象就是虚拟dom。但它们还不是真正的dom,所以会在后续的patch过程中进一步转化为dom。