Q:为什么需要虚拟DOM?
可以从框架设计和跨平台两个层面展开来说
1.框架设计
Vue 和 React 框架都是基于数据驱动的,以数据为中心,数据发生改变,对应的界面也要随之改变。由于框架去判断具体是哪些数据发生改变是比较困难的,因此Vue 和 React内部render函数的设计了中,当数据发生变化 ,render函数会全量生成元素。而此时在render中操作真实DOM,会严重影响效率。所以采用生成虚拟DOM的形式,通过Diff算法进行新旧DOM树的对比,寻找差异,再去操作真实DOM渲染。
虚拟DOM的出现可以通过在内存中操作虚拟DOM对象来减少实际DOM操作的次数,从而减少了重排和重绘的次数,提高了性能
2.跨平台
虚拟DOM的设计使得它可以独立于平台实现,这样就可以在不同的平台上使用相同的代码逻辑来构建应用程序,例如在Web端、移动端和桌面端等
虚拟DOM是一个对象,是可以实现多端共用的。
根据不同的环境,使用虚拟DOM渲染界面,就可以实现一套代码在多端运行。