虚拟dom && diff算法

虚拟dom && diff算法

  1. 虚拟dom是什么?

    • 所谓的Virtual dom,也就是我们常说的虚拟节点,它是通过JS的Object对象模拟DOM中的节点,然后再通过特定的render方法将其渲染成真实的DOM的节点。
    •  eg:    var vdom = {
       tag: 'div',
       attr: {
           className: 'box'
       },
       content: [
           {
           tag: 'ul',
           content: [
               {
               tag: 'li',
               content: data.name
               }
           ]
           }
       ]
       }
      
  2. 虚拟dom的使用基本流程。

    • 获取数据( ajax fetch )

         eg: var data={
                   }
      
    • 创建vdom
      - html结构

    • 通过render函数解析jsx,将其转换成 vdom结构

    • 将vdom渲染成真实dom (render函数)

    • 数据更改后,创建一个新的Vdom

      • 然后Vnode和oldVnode作对比,发现有不一样的地方就直接修改在真实的DOM上,然后使oldVnode的值为Vnode
    • 使用diff算法比对两次vdom,生成patch对象(diff的过程就是调用名为patch的函数,比较新旧节点,一边比较一边给真实的DOM打补丁(patch)。)

  3. diff算法是什么?

    • diff算法是比较两个文件的差异,并将两个文件不同之处,将这个不同之处生成一个补丁对象(patch)
      • diff算法来源后端
        • 前端将其应用于虚拟dom的diff算法
        • vue中将 虚拟dom的diff算法放在了 patch.js文件中
        • 使用js来进行两个对象的比较( vdom 对象模型)
      • diff算法是同级比较
        • 给每一个层级打一个标记,这个标记是一个数字( 这个数字就是 key )
  4. DOM diff:(https://blog.csdn.net/kameleon2013/article/details/89218685 图片转载)在这里插入图片描述

在这里插入图片描述

  1. diff算法运行结束之后,返回什么?

    • diff算法是比较两个文件的差异,并将两个文件不同之处,将这个不同之处生成一个补丁对象(patch)

注意: vue是一是MVVM框架,Vue高性能的原因之一就是vdom

深化: Vue vdom vs React vdom 有何不一样?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值