最近从使用vue转为react。之前研究过vue的diff算法。看了下react的diff的源码,写了一些自己的看法。1、Vue的diff算法diff算法发生在虚拟dom上判断是否相同节点:selector和key必须相同diff规则:只比较同层节点,不比较不同层。删除原有节点,新建插入更新节点(实际开发中很少遇到)。新旧节点是同一层的节点,但不是同一个节点,不进行细粒度比较。删除原有节点,新建插入更新节点(实际开发中很少遇到)。新旧节点为同层节点,同节点。需要细化的diff比较策略。新头子节点,老头子节点新尾子节点,老尾子节点新尾子节点,老头子节点新头子节点,老尾子节点如果满足条件1,则旧节点和新节点向后移动。如果满足条件2,则新旧节点的尾指针向前移动。先判断新的子节点是否循环结束(通过头尾位置指针判断),yes:删除节点,no:添加新节点,根据条件4添加新节点。如果条件3满足,需要将新的head从子节点移动到旧的tail子节点,如果满足条件4,则需要将新的head子节点移动到旧的head子节点的前面。如果四种类型都不匹配,不满足指针条件,则循环需要匹配Vue中移动的节点和匹配的节点设置为undefined2.react的diff算法从左到右比较,索引元素的lastIndex与标识符的lastIndex进行比较。如果满足index
