diff 算法就是对虚拟 dom 进行对比,并返回一个 patch 对象,这个对象的作用是存储两个节点不同的地方,最后用 patch 里记录的信息去局部更新真实的 dom

diff 算法的步骤

1.js 对象表示真实的 dom 结构,就是我们说的生成一个虚拟 dom,再用虚拟 dom 构建一个真的 dom 树,放到页面中。

2.状态改变的时候生成一个新的虚拟 dom 跟旧的进行对比,这个对比的过程就是 diff 算法,通过 patch 对象记录差异

3.把记录的差异用在第一个虚拟 dom 构建的真实的 dom 上,视图就更新了

Vue的diff算法是平级⽐较,不考虑跨级⽐较的情况。内部采⽤深度递归的⽅式+双指针⽅式⽐较

1.先⽐较两个节点是不是相同节点 相同节点⽐较属性,

2.复⽤⽼节点 先⽐较⼉⼦节点,考虑⽼节点和新节点⼉⼦的情况

3.优化⽐较:头头、尾尾、头尾、尾头

4.⽐对查找,进⾏复⽤

Vue的diff算法原理是什么?相关推荐

  1. [Vue源码] Vue中diff算法原理

    一. Vue中diff算法原理 理解: 1.先同级比较,在比较子节点 2.先判断一方有儿子一方没儿子的情况 3.比较都有儿子的情况 4.递归比较子节点 图: 1.原节点:ABCD,新节点:ABCDE, ...

  2. vue的diff算法原理

    1. 为什么要用Diff算法 由于在浏览器中操作DOM是很昂贵的,频繁的操作DOM,会产生一定的性能问题,这就是虚拟DOM的产生原因.虚拟DOM本质上是JavaScript对象,是对真实DOM的抽象状 ...

  3. 【Vue源码初探】五.diff算法原理

    五.diff算法原理 文章目录 五.diff算法原理 一.基本Diff算法 不是同一个节点 同一个节点 递归比较儿子节点 二.完整的Diff算法 在开头和结尾新增元素 头移尾,尾移头 图示 乱序比对 ...

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

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

  5. 2.vue的diff算法(2020.12.07)

    在之前的生命周期中有提到过虚拟dom的相关概念,这里来简单介绍一个vue的diff算法的原理 1.virtual dom 无论是vue还是react,在更新渲染的过程中,都是先根据真实dom生成一个虚 ...

  6. 十分详细的diff算法原理解析

    本文我们总结一下有关diff算法的相关内容和实现原理 开门见山,直接先给出大家diff算法的概念 diff算法可以看作是一种对比算法,对比的对象是新旧虚拟Dom.顾名思义,diff算法可以找到新旧虚拟 ...

  7. [vue] 你了解vue的diff算法吗?

    [vue] 你了解vue的diff算法吗? 我的理解:计算出虚拟 DOM 中真正变化的部分,并且只针对该部分进行 DOM 更新,而非重新渲染整个页面 个人简介 我是歌谣,欢迎和大家一起交流前后端知识. ...

  8. Vue中diff算法的理解

    Vue中diff算法的理解 diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结 ...

  9. 【vue】diff 算法详解

    一.diff算法是什么 diff算法是一种通过同层的树节点进行比较的高效算法 diff算法的目的就是找出新旧不同虚拟DOM之间的差异,使最小化的更新视图,所以 diff 算法本质上就是比较两个js对象 ...

  10. 详解vue的diff算法

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

最新文章

  1. Python中相见恨晚的技巧(记得收藏)
  2. mysql大于等于怎么写_数据库中大于等于0小于等于100怎样表达
  3. pip和conda批量导出、安装第三方依赖库(requirements.txt)
  4. 配对碱基链(信息学奥赛一本通-T1135)
  5. Oracle中开启并行和相关查询
  6. Android 简单实现控件的拖动
  7. Android Studio中.9.png文件出错问题
  8. php讲一个正整数前补0,php 数字补零的两种的简单示例
  9. 计算机ip变,为什么电脑IP地址总是自动改变
  10. python把英语句子成分字母_英语基础(一)句子成分和结构
  11. 电源系列3:DCDC BUCK降压电路原理
  12. 计算机主机结构图手画,流程图怎么画简单又漂亮
  13. 软件实施过程、软件实施工程师职责
  14. 天翼校园网开wifi指南
  15. webview加载html图片不显示图片,WebView加载网页不显示图片解决办法
  16. 计算机辅助普通话水平测试第三项占多少分,计算机辅助普通话水平测试第三项朗读短文占...
  17. 开启 Zookeeper 四字命令(is not executed because it is not in the whitelist)
  18. 企业使用虚拟码号的优势!
  19. MySQL数据库的MNA集群环境配置
  20. (转)CPU/GPU/TPU/NPU傻傻分不清楚

热门文章

  1. UCOSII 学习笔记(卢有亮视频相关习题)
  2. 【考试】2019.3计算机等级考试所有科目
  3. 凤凰os可以用linux指令么,用凤凰OS必须先了解的那些事
  4. 怎么求中位数和分位数 概率密度函数_数理统计第四讲(次序统计量续,伽马分布)...
  5. 2020 BAT/大厂/银行 Java后端开发 校招实习生要求
  6. Python实现日程表
  7. 离散数学程序实现——求关系矩阵的自反和对称闭包——c
  8. html5小游戏塔防,HTML5塔防(一)
  9. 如何把图片制作成GIF动图?GIF图是怎样合成的?
  10. 嵌入式入门学习的必要步骤