什么是diff算法?

diff算法就是进行虚拟节点对比,并返回一个patch对象,用来存储两个节点不同的地方,最后用patch记录的消息去局部更新Dom。

简单来说Diff算法就是在虚拟DOM树从上至下进行同层比对,如果上层已经不同了,那么下面的DOM全部重新渲染。这样的好处是算法简单,减少比对次数,加快算法完成速度。

有两个特点

  • 比较只会在同层级进行, 不会跨层级比较
  • 在diff比较的过程中,循环从两边向中间比较

diff算法的步骤
用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文 档当中
当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较(diff),记录两棵树差异
把第二棵树所记录的差异应用到第一棵树所构建的真正的DOM树上(patch),视图就更新了

什么是diff算法?相关推荐

  1. Vue源码终笔-VNode更新与diff算法初探

    写完这个就差不多了,准备干新项目了. 确实挺不擅长写东西,感觉都是罗列代码写点注释的感觉,这篇就简单阐述一下数据变动时DOM是如何更新的,主要讲解下其中的diff算法. 先来个正常的html模板: & ...

  2. diff算法_React源码揭秘(三):Diff算法详解

    编者按:本文作者奇舞团前端开发工程师苏畅. 代码参照React 16.13.1 什么是Diff 在前两篇文章中我们分别介绍了 React 的首屏渲染流程1和组件更新流程2,其中 首屏渲染会渲染一整棵 ...

  3. 关于react diff 算法(译文)

    React是由facebook开发,用于构建用户界面的js类库,以提升性能为设计理念.在本文中,我将为大家介绍在React中的diff算法,以及它的渲染机制,以便于你能够更好的优化你的程序. Diff ...

  4. React Diff 算法

    React介绍 React是Facebook开发的一款JS库,用于构建用户界面的类库. 它采用声明式范例,可以传递声明代码,最大限度地减少与DOM的交互. 特点: 声明式设计:React采用声明范式, ...

  5. 做diff_Vue3.0时代你必须了解的:diff算法原理和优化

    关注前端公众号 [前端每日一博] 前言 面试官: 你知道 Vue3.0 Object.difineProperty和vue3.0的proxy的区别吗? 你知道 Vue3.0 diff算法原理和它有什么 ...

  6. 详解vue的diff算法

    前言 目标是写一个非常详细的关于diff的干货,所以本文有点长.也会用到大量的图片以及代码举例,一起来get吧. 先来了解几个点... 1. 当数据发生变化时,vue是怎么更新节点的? 要知道渲染真实 ...

  7. JS每日一题:Vue中的diff算法?

    20190125 Vue中的diff算法? 概念: diff算法是一种优化手段,将前后两个模块进行差异对比,修补(更新)差异的过程叫做patch(打补丁) 为什么vue,react这些框架中都会有di ...

  8. 虚拟DOM和Diff算法 - 入门级

    什么是虚拟Dom 我们知道我们平时的页面都是有很多Dom组成,那虚拟Dom(virtual dom)到底是什么,简单来讲,就是将真实的dom节点用JavaScript来模拟出来,而Dom变化的对比,放 ...

  9. 理解Vue 2.5的Diff算法

    DOM"天生就慢",所以前端各大框架都提供了对DOM操作进行优化的办法,Angular中的是脏值检查,React首先提出了Virtual Dom,Vue2.0也加入了Virtual ...

  10. ReactiveNative学习之Diff算法

    React 源码剖析系列 - 不可思议的 react diff 深入浅出React(四):虚拟DOM Diff算法解析 React diff 算法 总结链接引用的文章 React出于性能的考虑,为了避 ...

最新文章

  1. 科学探索奖首批50名获奖者都有谁?
  2. 利用PCHunter结束各种进程
  3. Kotlin教程(九)泛型
  4. vm15 安装 mac虚拟机的过程 转载的
  5. RedAlert简介
  6. Tomcat 指定jdk
  7. 微信php 客户端cookie,微信内置浏览器中的cookie很诡异呀
  8. indesign使用教程,如何将图形添加到项目?
  9. 查看电脑无线网 wifi密码
  10. voxel体素网络滤波器
  11. 2.4G无线音频双向传输技术运用
  12. 多核环境下的内存屏障指令
  13. “老K,怎样副业搞钱?”
  14. 鸿蒙系统安装苹果电脑,好消息!华为鸿蒙OS系统,解决了苹果、安卓系统的一大难题...
  15. Word文档“右边没对齐”问题
  16. 三节课产品经理P1 作业
  17. Visual studio 默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)
  18. 〖Python 数据库开发实战 - Python与Redis交互篇⑫〗- 综合案例 - 新闻管理系统 - 删除新闻(含redis缓存)
  19. cordova app 监听物理返回键
  20. HDU-2594 Simpsons’ Hidden Talents

热门文章

  1. js 将html 某个dom 导出pdf,并处理分页
  2. Github中文汉化插件—亲测可用
  3. Linux(centos7下载安装)
  4. 阿里maven仓库地址
  5. Halcon教程-HALCON19.05Progress将于2019年5月31日正式发布
  6. 下载小红书无水印照片
  7. 【超级鼠标键盘锁】之HOOK钩子屏蔽鼠标和Ctrl+Alt+Del、Win+L之外的按键
  8. 8.docker run --rm
  9. 拉格朗日插值法与牛顿插值法
  10. 计算机显示10的负次方,我输入10的9次方在EXCEL里,为什么总变成日期了?怎么办/excel10的负次方怎么打...