美文网首页Finos
DOM DIFF 原理解析

DOM DIFF 原理解析

作者: 越祈V | 来源:发表于2020-02-27 14:09 被阅读0次

DOM DIFF 原理解析

背景:

现在面试极其热门的一个问题, 希望通过这个分享, 能让大家对DOM DIFF原理有一个更深入的了解

目标:

1. 了解我们日常使用vnode的渲染原理

2. 了解dom diff的原理, 能详细的描述其过程

3. 结合我们的业务应用(json diff)

4. 了解vue nextTick的原理, 能简单的描述其原理

5. vue dom diff 和 react dom diff 的区别

dom diff简介

顾名思义, 就是虚拟道木比对(virtual dom diff), 这里简单介绍一下virtual dom的实现原理。

常见的virtual dom库**snabbdom**, vue的虚拟dom起始就是基于snabbdom来实现的, 不过是在其基础上做了一系列的优化, 稍后我们会介绍

https://github.com/snabbdom/snabbdom

下面以snabbdom为例简单介绍一下虚拟dom的渲染原理;

它的核心是由三个核心方法构成的:

-  render: 将虚拟dom 渲染成真实dom

-  h:把传入的参数变为虚拟dom。 虚拟dom入口方法, 用户可以调用这个方法,

-  patch:比对和更新

下面我们来简单分析一下domdiff的渲染流程

实现 h 函数

h函数接受四个参数, 第一个参数是tag, 第二个参数是props, 第三个参数是文字/子节点

起始我们就是需要把传入的参数给格式化, 转化成虚拟dom的形式

​ 这里可以简单测试一下

### render函数

render函数的作用是把h函数转化成的vnode, 第一层开始, 一次递归把vnode转化成真实dom

看一下代码

核心patch函数

patch函数的作用就是比较新旧虚拟dom的差异, 做到最小量的更新。 也就是我们所说的dom diff

简单看一下流程图

相关文章

  • DOM DIFF 原理解析

    DOM DIFF 原理解析 背景: 现在面试极其热门的一个问题, 希望通过这个分享, 能让大家对DOM DIFF原...

  • 解析 React 虚拟 DOM 原理 + DOM Diff 算法

    导读: 当用原生 JS / jQuery 操作 DOM 时,浏览器会从构建 DOM 树开始从头到尾渲染一遍 DOM...

  • XML*

    目录 XML简介 XML基本语法 XML解析 * DOM解析   * DOM解析原理及工具   * DOM4J解析...

  • Vue2.0的Diff算法

    原文:解析Vue2.0的Diff算法 Vue2.0加入了Virtual Dom,Vue的Diff位于patch.j...

  • xml解析

    一、解析方式:DOM解析,SAX解析 1)解析工具 基于DOM解析原理的: 1)JAXP (o...

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

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

  • 虚拟dom和diff算法

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

  • react VS Vue diff算法

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

  • 学习笔记:深入RN知识总结

    一、RN底层实现原理 1.1、 React内部核心:虚拟DOM技术+diff算法。 React框架,将JSX代码渲...

  • 虚拟DOM Diff算法解析

    React中最神奇的部分莫过于虚拟DOM,以及其高效的Diff算法。这让我们可以无需担心性能问题而”毫无顾忌”的随...

网友评论

    本文标题:DOM DIFF 原理解析

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