DOM和虚拟DOM的差异
普通的DOM我们称之为,构建整个文档流的DOM元素(div,span...标签),真实存在于HTML文档流中,每次操作DOM都会产生开销,例如:删除,新增,修改某一个DOM元素尺寸,样式,文档流都会进行重绘,回流,我们感官上能感觉到,视图发生了真实变化。
虚拟DOM可以理解成通过js构建的js对象实例(如:Document.CreateElement(),可以创建实例DOM对象),这些实例可以是创建的div,span等任意标签,但这些DOM不存在于页面的文档流中,存在当前的js代码块中,他们的状态变化不会引起文档流多次的重绘,他们的最终状态,才可能会影响文档流,比如通过JS,多次操作创建的DOM元素,最终将DOM元素加入到文档流中,这时候及时我们中途多少次操作创建的DOM,页面也不会多次重绘,直到最后一次操作完成,我们将虚拟DOM加入到文档流,页面才会重绘
操作虚拟DOM可以提高页面重绘次数,降低浏览器多次重绘开销(频繁操作DOM,重绘时页面的卡顿,等待时间长,布局结构错乱)用户体验也会更好