虚拟DOM(Vue)

本文探讨了Vue为何采用虚拟DOM,通过对比真实DOM操作的局限性和性能消耗,阐述了虚拟DOM如何通过生成VNode树进行高效更新。重点讲解了Vue2.0的watcher优化策略和VNode在组件内的差异化更新。
摘要由CSDN通过智能技术生成

vue为什么使用虚拟DOM?

因为在早期jQuery,也是操作DOM的,只是操作的是真实DOM,随着时代的发展,页面的功能越来越多,需要操作的DOM也就越来越没有底线

真实DOM频繁触发会带来性能上的损耗,而且不利于维护,这并不是我们所看到的

如今,三大主流框架都是声明式操作DOM,只需要描述操作和DOM之间的映射关系是怎样的,框架会自动的将对应的状态渲染到视图上

虚拟DOM会根据状态生成一个虚拟节点,然后跟上一个虚拟节点对比(diff算法.),只渲染它们不同的部分,而且是像打补丁的形式(vue一点一点进行更新真实DOM,react是根据此次所有不同的虚拟DOM一次性去更新此次真实DOM)更新的

在Vue1.0的时候,每一个状态都会绑定一个watcher进行观察。当项目变得很大的时候,这个开销就会变得非常大。

所以在Vue2.0版本中取了一个折中的方案,为每个组件绑定一个watcher。状态发生改变的时候,只在组件内进行对比VNode,找出需要改变的VNode节点。

Vue模板

<template>
  <div id='app'>
    <span class='span'>hello Vue</span>
  </div>
</template>

VNode节点

{
  tag: 'div',
    data: {
    // 属性
    attr: {
      id: 'root',
    }
  },
  children: [
    {
      tag: 'span',
      data: {
        // 静态class
        staticClass: 'span',
      },
      children: [
        {
          tag: undefined,
          data: undefined,
          children: undefined,
          // 文本
          text: 'hello Vue',
        }
      ]
    }
  ],
    text: undefined,
}

总结:

每个 VNode 有 Children,Children 每个元素也是一个 VNode ,这样就形成了一个虚拟树结构,用于描述真实的DOM树结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值