什么是虚拟DOM??
虚拟DOM实际上是一个JS对象,他可以对DOM节点进行描述,记录真实的DOM节点的关键信息。
为什么需要虚拟DOM??
在之前的浏览器运行机制中说过,页面渲染过程,解析html生成DOM树,解析css生成cssDOM树,两者结合生成render渲染树,根据render渲染树去布局,绘图,最后经过渲染重组生成了页面。、在传统的js和jquery去操作DOM元素,获取元素,删除元素,创建元素,像这样频繁的去操作元素,会导致页面不断的重绘,和回流,在回流和重绘的过程可能会导致页面错乱,和增加cpu的使用,从而使得页面卡顿。
虚拟DOM可以看做是将真实的DOM树做了一次映射,虚拟DOM树上记录了一些DOM节点的关键信息,将这个虚拟DOM的JS对象保存在内存中,然后通过JS去维护
虚拟DOM的工作原理:
1.页面在第一次加载时会生成一个虚拟DOM树,上面记载了一下真实DOM树上的信息
2.当DOM节点属性发生改变(比如说,位置尺寸,color等),通过js直接操作虚拟DOM节点
3.将修改后的虚拟DOM树和旧的DOM树进行比较(这里面存在着一个算法:diff)
4.将最终生成的虚拟DOM树更新到页面中去