vue3.0和vue2.0的区别

Vue 3.0 引入了显著的性能优化,包括区分静态和动态节点以减少不必要的遍历,事件缓存避免重复创建函数,以及使用Proxy替代defineProperty提高响应式效率。此外,按需打包和引用提升了加载速度,同时拥抱了typescript以增强类型检查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 区分静动态节点,只遍历动态

        2.0在虚拟DOM渲染时,会遍历所有的标签,不管是动态的还是静态的(虚拟DOM一般采用键值对对象来保存元素的属性和内容),当内容发生改变时,遍历虚拟DOM来找到对应的DOM节点,并改变其内容。

        3.0在此基础上做出优化,3.0会标记静态和动态节点,在遍历更新时只会更新动态的,而不会遍历静态节点

  • 缓存绑定事件函数,不会二次创建,而是直接调用

        2.0在绑定事件的时候每次触发都会生成全新的function,然后执行函数的操作。

        3.0添加了事件缓存对象cacheHandlers,在编译时会自动生成一个内联函数,将其变成一个静态节点,再次触发事件时只需调用缓存的事件回调方法即可。

  • 使用Proxy代替defineProprety,减少属性添加次数

        2.0使用Object.defineProperty()来实现响应式对象,对于一些复杂的对象,还需要循环递归的给每个属性增加上getter/setter监听器,这使得组件的初始化非常耗时。

        3.0中,composition-api提供了一种创建响应式对象的方法reactive,其内部就是利用了Proxy API来实现的,这样就可以不用针对每个属性来一一进行添加,减少开销提升性能。

  • 按需打包,按需引用

        2.0会全部引用vue,例如:

import Vue from 'vue'

new Vue()

        3.0在打包时不会打包未使用的内容,在引用vue时是按需引用,例如:

import { createApp } from 'vue'

createApp(App)

  • 类型检测,3.0使用typescript
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值