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

虚拟DOM 和 Diff 算法

  1. 什么是虚拟DOM?

    • 使用javascript模拟了DOM结构的树形结构(对象表示),这个树结构包含整个DOM结构的信息
  2. 使用虚拟DOM有什么好处?
    • 操作数据要大大的减少性能损耗,提高渲染效率
    • 越多的真实dom操作,越损耗性能
  3. 什么是Diff 算法?
    • 是linux的基础命令,用来比较两个文本文件的差异,是代码版本管理的基石之一
    • vdom中应用diff算法是为了找出需要更新的节点
    • diff算法的实现,关注patch,patch方法中首先判断两个节点是否相同
    • 核心逻辑。createElement和updateChildren
  4. diff算法是用来做什么的?
    • vue的diff算法用于视图更新,也可以说是dom更新
  5. 接下我们以一个案例的形式告诉大家 : 列表渲染为什么要加key?
    1. key的作用

      • 主要是为了高效的更新虚拟DOM。另外vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们,否则vue只会替换其内部属性而不会触发过渡效果。
  6. jsx 在vue采用的原因
    • VDOM对象树太繁琐了, 如果能像dom结构一样书写就好了, 这就引入了 jsx
  7. render函数是做什么的
    • 但是jsx始终还是不能直接去用的,必须转换成 对象 才能使用,
    • vue中 使用render 函数 解析jsx语法, 然后换成 对象结构 ,在通过 createElment 生成节点,渲染成真实DOM
  8. VDOM的渲染流程
    1. 获取数据
    2. 根据数据创建VDOM (相当于给对象赋值)
    3. 根据VDOM渲染生成真实DOM ( 根据createElmeent(‘DIV’) )
    4. 当数据发生改变后,又会生成新的VDOM
    5. 通过 diff 算法 比对 多次生成的 VDOM, 将不同的内容比对出来,然后在进行真实DOM渲染,
    6. 一样的内容是不会进行渲染的,这就是VDOM 的 ‘就地复用’ | ‘惰性原则’

原文地址:https://www.cnblogs.com/zhaoyingzi/p/10921949.html

时间: 2024-11-06 07:26:26

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

react虚拟dom与diff算法

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

深入理解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非

虚拟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. 比如某个元素

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 操作的实现必须是普适的,所

vue的虚拟dom(Virtual DOM )

模板转换成视图的过程 在底层实现中Vue会将模板编译成渲染函数,当然我们也可以不写模板,直接写渲染函数,以获得更好的控制. 渲染函数:渲染函数是用来生成Virtual DOM的:VNode虚拟节点:vnode可以理解成dom节点的描述对象,它描述了应该怎样去创建真实的DOM节点:patch(patching算法):虚拟DOM最核心的部分,它可以将vnode渲染成真实的DOM.这个过程是对比新旧虚拟节点之间有哪些不同,然后根据对比结果找出需要更新的的节点进行更新.其实际作用是在现有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?