美文网首页
面试问题

面试问题

作者: RiverSouthMan | 来源:发表于2020-12-24 11:46 被阅读0次

vue diff算法大概过程和重要思想

  • 两个不同类型的元素将产生不同的树。只要发现两个元素的类型不同,我们直接删除旧的并创建一个新的,而不是去递归比较。
  • 比较并更新当前元素的差异
  • 递归比较children

这时候分两种情况:

  • 如果孩子不是textNode,那么需要再分三种情况处理
  • 如果当前孩子是 textNode 那么直接更新 text即可

对孩子是vnode的三种情况:

  • 有新孩子无旧孩子,直接创建新的
  • 有旧孩子无新孩子,直接删除旧的
  • 新旧孩子都有,那么调用 updateChildren 比较他们的差异,而这一部分就是diff算法的精髓所在

在diff比较的过程中,循环从两边向中间收拢,属性key值是优化diff性能的。

相关文章

网友评论

      本文标题:面试问题

      本文链接:https://www.haomeiwen.com/subject/riqunktx.html