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中的对象做一个关联关系
posted @ 2020-06-20 09:11  wangyfax  阅读(142)  评论(0)    收藏  举报