美文网首页
虚拟DOM和Diff算法

虚拟DOM和Diff算法

作者: 灯光树影 | 来源:发表于2018-09-22 20:56 被阅读0次

一、虚拟DOM

虚拟DOM不是真实的DOM,而是一个JS对象。它的作用是判断DOM是否改变、哪些部分需要被重新渲染。这样,不需要操纵真实的DOM,极大的提高了React的性能。

  • React的DOM渲染步骤
  1. state 数据
  2. JSX语法 模板
  3. 数据 + 模板 生成虚拟DOM(就是用js对象表示真实DOM)
  4. 用虚拟DOM 结构生成真实DOM 渲染页面
  5. state改变
  6. 数据 + 模板 生成新的虚拟DOM
  7. 旧的虚拟DOM和新的虚拟DOM做对比,找出发送改变的DOM
  8. 操作真实的DOM,把改变的内容替换掉
  • 优点
  1. 性能提升了
  2. 它使得跨端应用得以实现。React Native,因为不使用真实DOM,而是虚拟DOM,js对象可以在浏览器,或者node,原生应用中

二、Diff算法

  • Diff算法就是在虚拟DOM树从上至下进行同层比对,如果上层已经不同了,那么下面的DOM全部重新渲染。这样的好处是算法简单,减少比对次数,加快算法完成速度。
  • 示意图
Diff.jpg
  • key值的作用
    由于key值用于循环输出的DOM,比如ul下的li,那么这些li在同一层。在旧虚拟DOM和新虚拟DOM比对时,需要标识比对对象。比如上图,旧的4需要和新的4比对,如果没有key就需要遍历查找比较对象,耗费性能。
    由此可见,key关系到虚拟DOM的比对对象查找,所以key需要唯一且不可变,所以说index作为key值不合适,因为index可能会随li的个数的改变而改变

相关文章

  • 虚拟dom和diff算法

    虚拟DOM和diff算法 diff:精细化比对最小量更新 真实DOM和虚拟DOM 虚拟DOM:用JavaScrip...

  • react VS Vue diff算法

    react diff diff算法的作用:数据更改,生成相应的虚拟DOM,与真实DOM作对比,通过diff算法,对...

  • 第十七天

    1.你怎么理解vue中的diff算法? diff算法是虚拟DOM技术的必然产物:通过新旧虚拟DOM作对比(即dif...

  • Diff 算法、key

    概念 DOM diff 就是对比两棵虚拟 DOM 树的算法。当组件变化时,会得到一个新的虚拟 DOM,diff 算...

  • 深入理解react中的虚拟DOM、diff算法

    文章结构: React中的虚拟DOM是什么? 虚拟DOM的简单实现(diff算法) 虚拟DOM的内部工作原理 Re...

  • 1,v-for:key

    1,为什么v-for需要添加key,优缺点和场景。 前置知识: 虚拟Dom和Diff算法 KeyWords: 虚拟...

  • React虚拟DOM分析

    1.简介 虚拟DOM主要包括 Virtual DOM模型 生命周期的维护和管理 性能高效的diff算法 将虚拟DO...

  • vue系列---vue-diff

    1.vue-diff 是什么? 提到vue的diff算法就不得不提一个名词 虚拟dom(Virtual DOM) ...

  • 虚拟DOM和Diff算法

    一、虚拟DOM 虚拟DOM不是真实的DOM,而是一个JS对象。它的作用是判断DOM是否改变、哪些部分需要被重新渲染...

  • 虚拟DOM和DIFF算法

    一、真实DOM的解析流程 第一步、用HTML分析器,分析HTML元素,构建一棵DOM树(标记化和树构建)。 第二步...

网友评论

      本文标题:虚拟DOM和Diff算法

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