虚拟DOM and diff 算法

1. 数据 state

2. JSX模板

3. 数据+模板 结合生成真实的DOM来显示

4. State 变化

5.数据+模板 结合生成真实的DOM, 替换原来的DOM

缺陷:

第一次生成了完整的DOM, 第二次生成了完整的DOM, 第二次替换第一次, 非常消耗性能

1. 数据 state

2. JSX模板

3. 数据+模板 结合生成真实的DOM来显示

4. State 变化

5.数据+模板 结合生成真实的DOM,并不直接 替换原来的DOM

6. 两次DOM 做对比 找出差异

7. 比如某个元素input变化了

8. 只用新的DOM中的input , 替换掉老的DOM中的Input 元素

缺陷:

性能提升不明显

1. 数据 state

2. JSX模板

3. 数据+模板 结合生成虚拟的DOM(损耗性能小)

<div><span>hello</span></div>

4. 用虚拟DOM生成真实DOM(虚拟DOM是一个JS的对象,用来描述真实的DOM

5. State 发现变化

6. 数据加模板 生成新的虚拟dom(极大的提高了性能)

7. 比较原始虚拟DOM 和新的DOM 区别(极大的提高了性能, 比较JS对象不消耗性能)

8. 直接操作DOM,更新

JSX >> React.createElement > 虚拟DOM(JS 对象) >> 真实DOM

优点:

  • 性能提升了
  • 跨端应用得以实现 ex:react native

setState 是异步的, 是为了提高react 底层的性能

Diff 算法:

同层比对

虚拟DOM的比对会根据Key 进行关联, 极大的提高的性能,所以key最好不变 不要是index

原文地址:https://www.cnblogs.com/padingdun/p/12317786.html

时间: 2024-11-01 18:09:18

虚拟DOM and diff 算法的相关文章

react虚拟dom与diff算法

react拥有极速渲染的特点,这个特点依靠的就是react的虚拟dom和diff算法 对比两个图就可以发现标准dom机制下,用户在应用上的操作是直接对真实dom进行操作的,在react中我们操作 的是虚拟dom,用户的操作产生的数据改变或者state变量改变,都会保存到虚拟dom上,之后再批量的对这些更 改进行diff算法计算,对比操作前后的虚拟dom树,把更改后的变化再同步到真实dom上 虚拟DOM的原理: React会在内存中维护一个虚拟DOM树,对这个树进行读或写,实际上是对虚拟DOM进行

虚拟DOM 和 Diff 算法,key的作用,jsx,render函数

虚拟DOM 和 Diff 算法 什么是虚拟DOM? 使用javascript模拟了DOM结构的树形结构(对象表示),这个树结构包含整个DOM结构的信息 使用虚拟DOM有什么好处? 操作数据要大大的减少性能损耗,提高渲染效率 越多的真实dom操作,越损耗性能 什么是Diff 算法? 是linux的基础命令,用来比较两个文本文件的差异,是代码版本管理的基石之一 vdom中应用diff算法是为了找出需要更新的节点 diff算法的实现,关注patch,patch方法中首先判断两个节点是否相同 核心逻辑.

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

文章结构: React中的虚拟DOM是什么? 虚拟DOM的简单实现(diff算法) 虚拟DOM的内部工作原理 React中的虚拟DOM与Vue中的虚拟DOM比较 React中的虚拟DOM是什么?   虽然React中的虚拟DOM很好用,但是这是一个无心插柳的结果.   React的核心思想:一个Component拯救世界,忘掉烦恼,从此不再操心界面. 1. Virtual Dom快,有两个前提 1.1 Javascript很快  Chrome刚出来的时候,在Chrome里跑Javascript非

React 虚拟dom与diff算法

一.React的虚拟dom react生成真实dom的步骤如下: 1.state(数据)与模版结合生成虚拟dom. 2.React根据虚拟dom的结构生成真实dom节点(1). 3.数据发生改变时,生成新的虚拟dom. 4.新的虚拟dom与原先的虚拟dom进行比较,将新的虚拟dom变动的部分替换原虚拟dom.(2) 5.根据变动后的虚拟dom结构生成真实的dom. 注解:(1)React根据虚拟dom生成真实dom,而不是直接生成真实dom.根据这个特性,可以实现跨端应用(React Nativ

图解vue中 v-for 的 :key 的作用,虚拟dom Diff算法

其实不只是vue,react中在执行列表渲染时也会要求给每个组件添加上key这个属性. 要解释key的作用,不得不先介绍一下虚拟DOM的Diff算法了. 我们知道,vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面.而隐藏在背后的原理便是其高效的Diff算法. vue和react的虚拟DOM的Diff算法大致相同,其核心是基于两个简单的假设: 1.两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构. 2.同一层级的一组节点,他们

虚拟 DOM 的优缺点?

什么是虚拟dom用js模拟一颗dom树,放在浏览器内存中.当你要变更时,虚拟dom使用diff算法进行新旧虚拟dom的比较,将变更放到变更队列中, 反应到实际的dom树,减少了dom操作. 虚拟DOM将DOM树转换成一个JS对象树,diff算法逐层比较,删除,添加操作,但是,如果有多个相同的元素,可能会浪费性能,所以,react和vue-for引入key值进行区分. 优点: 保证性能下限: 框架的虚拟 DOM 需要适配任何上层 API 可能产生的操作,它的一些 DOM 操作的实现必须是普适的,所

Virtual DOM 虚拟DOM的理解(转)

作者:戴嘉华 转载请注明出处并保留原文链接( #13 )和作者信息. 目录: 1 前言 2 对前端应用状态管理思考 3 Virtual DOM 算法 4 算法实现 4.1 步骤一:用JS对象模拟DOM树 4.2 步骤二:比较两棵虚拟DOM树的差异 4.3 步骤三:把差异应用到真正的DOM树上 5 结语 6 References 1 前言 本文会在教你怎么用 300~400 行代码实现一个基本的 Virtual DOM 算法,并且尝试尽量把 Virtual DOM 的算法思路阐述清楚.希望在阅读本

React虚拟DOM浅析

转帖: http://www.alloyteam.com/2015/10/react-virtual-analysis-of-the-dom/?hmsr=toutiao.io&bsh_bid=928783684 在Web开发中,需要将数据的变化实时反映到UI上,这时就需要对DOM进行操作,但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因,为此,React引入了虚拟DOM(Virtual DOM)的机制. 什么是虚拟DOM? 虚拟DOM VS 直接操作原生DOM? 虚拟DOM VS MVVM?

vue虚拟dom原理

Virual DOM是用JS对象记录一个dom节点的副本,当dom发生更改时候,先用虚拟dom进行diff,算出最小差异,然后再修改真实dom. vue的virtual dom的diff算法是基于snabbdom算法改造而来,与react的diff算法一样仅在同级的vnode间做diff,递归的进行同级vnode的diff,最终实现整个DOM树的更新. 虚拟DOM的缺点: 1. 代码更多,体积更大 2. 内存占用增大 3. 小量的单一的dom修改使用虚拟dom成本反而更高,不如直接修改真实dom