React的核心概念
虚拟DOM(Virtual Document Object Model)
1、DOM的本质:用JS表示的UI元素
2、DOM和虚拟DOM的区别:
- DOM:是由浏览器中的JS提供的,所以我们只能人为的使用浏览器提供的固定的API来操作DOM对象
- 虚拟DOM:并不是由浏览器提供的,而是我们程序员手动模拟实现的,类似于浏览器中的DOM,但是有着本质的区别
3、为什么要实现虚拟DOM?
- 虚拟DOM是为了解决浏览器性能问题设计出来的,我们执行更新大量节点操作时,通过在这个虚拟DOM上实现了一个 diff 算法找出最小变更,再把这些变更写入实际的DOM中。这个虚拟DOM以JS结构的形式存在,计算性能会比较好,而且由于减少了实际DOM操作次数,性能会有较大提升。
4、Diff算法
- tree diff:新旧DOM树,逐层对比的方式,被叫做tree diff,当我们从前到后把所有层的节点树对比完之后,必然能够找到哪些需要被更新的元素。
- component diff:在对比每一层的时候,组件之间的对比叫做component diff;当对比组件的时候,如果两个组件的类型相同,则暂时认为这个组件不需要更新,如果组件的类型不同,则立即将旧的组件移除,新建一个组件,替换到被移除的位置
- element diff:在组件中,每个元素之间也要进行对比,元素级别的对比叫做elemrent diff
- key:key这个属性可以吧页面上的DOM节点 和 虚拟DOM中的对象做一个关联关系

浙公网安备 33010602011771号