使用虚拟Dom和原生操作进行比较
实际上原生操作 DOM,无论是性能还是效率上都是最高的
Vue为什么使用虚拟DOM
那为啥还需要虚拟 DOM 呢?主要是有 2 个原因绕不开:
- 像 Vue 这样的通用框架,核心理念就是要将这个数据和界面进行对应,当数据变化的时候要能够正确的渲染页面。这就产生一个问题,数据和界面是如何对应的,这就比较复杂了,因为一个数据可以用在不同的元素中,而一个元素里面有可能会用到多个数据,如此一来对应关系是很复杂的。所以不管那么多,只要数据一变,就全部生成一次,为了减少对真实 DOM 的操作,不得不引入虚拟 DOM,由于数据发生变化,我不知道界面具体是如何变化的,于是就全量生成虚拟 DOM,然后通过 diff 算法和之前的虚拟 DOM 对比,找到差异的地方,然后改动对应的真实 DOM。所以合理的拆分组件可以提升性能的原因。这实际上是不得已而为之的挽救措施
- 第二原因就是抽象。虚拟 DOM 其实就是是一个普通对象来表达 UI 界面,然会根据不同的平台去具体生成真实的界面,这样就可以实现跨平台了
对前端开发的启发
对于复杂的数据关系,可以进行合理的设计,并使用单一的状态变量统一管理,有效降低数据交互和管理的复杂度