虚拟DOM往简单了说就是用一种简便的方法去实现对DOM元素的操作。
为什么要用: 就是为了要解决浏览器的性能问题
好处:页面的更新可以先全部反映在JS对象(虚拟DOM)上,操作内存中的JS对象的速度显然要更 快,等更新完成后,再将最终的JS对象映射成真实的DOM,交由浏览器去绘制。
实现过程:可以通过Element方法可以用来创建虚拟DOM
Element实现步骤:
对元素依次进行类型判断,不同类型的进行不同的操作,直至全部都创建完成
判断两棵DOM树之间的差异需要用到DOM Diff算法
DOM Diff是深度优先遍历来记录差异的
将虚拟DOM渲染为真实的DOM元素需要把diff结果通过DOM fragment更新到浏览器DOM中。
虚拟DOM的真正意义是为了实现跨平台,服务端渲染,以及提供一个性能还算不错 Dom 更新策略。虚拟DOM让整个 mvvm 框架灵活了起来。
[通过diff算法可以统一计算出所有的变化之后进行一次性的更新(用到了js的DOM fragment来操作dom)]