虚拟DOM和deff算法

本文探讨了虚拟DOM的概念,它是模拟真实DOM节点的一种Object对象模型。虚拟DOM的使用流程包括获取数据、创建并渲染虚拟DOM,当数据改变时,通过diff算法比较新旧虚拟DOM的差异,生成patch对象进行高效更新。jsx是javascript与xml的结合,用于创建虚拟DOM结构。diff算法起源于后端,前端应用在虚拟DOM中,Vue的diff算法在patch.js中实现,通过key来优化更新过程。在Vue和React中,合理使用key能提升列表渲染的性能。
摘要由CSDN通过智能技术生成

虚拟dom && diff算法

  1. 虚拟dom是什么?
    它是一个Object对象模型,用来模拟真实dom节点的结构

  2. 虚拟dom的使用基本流程
    1.获取数据( ajax fetch )

    var data = {
          id: 1,
          name: '毛毛'
        }
    
    1. 创建vdom

       /*   <div class = "box">
              <ul>
                <li> {{ data.name }} </li>
              </ul>
            </div> */
      
    2. 通过render函数解析jsx,将其转换成 vdom结构

      var vdom = {
            tag: 'div',
            attr: {
              className: 'box'
            },
            content: [
              {
                tag: 'ul',
                content: [
                  {
                    tag: 'li',
                    content: data.name
                  }
                ]
              }
            ]
          }
      
    3. 将vdom渲染成真实dom
      使用render函数

    4. 数据更改了, data.name = ‘贝贝’

    
    data.name = ‘贝贝'
    vdom = {
     tag: 'div',
     attr: {
       className: 'box'
     },
     content: [
       {
         tag: 'ul',
         content: [
           {
             tag: 'li',
             content: data.name
           }
         ]
       }
     ]
    }
    
    1. 使用diff算法比对两次vdom,生成patch对象
  3. 什么是jsx?

    1. jsx javascript + xml
  4. diff算法是什么?

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

    • diff算法来源后端

    • 前端将其应用于虚拟dom的diff算法

    • vue中将 虚拟dom的diff算法放在了 patch.js文件中

    • 使用js来进行两个对象的比较( vdom 对象模型)

    • diff算法是同级比较

    • 给每一个层级打一个标记,这个标记是一个数字( 这个数字就是 key )

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

    • 返回一个补丁对象

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

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

  1. 验证 key
  • 列表循环一定加key
  • key最好是使用具有唯一标识性的 id
  1. 为什么列表循环要加key ?
    1. vue中列表循环需加:key=“唯一标识” 唯一标识可以是item里面id index等,因为vue组件高度复用

    2. 增加Key可以标识组件的唯一性,为了更好地区别各个组件

    3. key的作用主要是为了高效的更新虚拟DOM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值