Vue2和Vue3的区别

本文详细对比了Vue2和Vue3在生命周期方法、响应式实现、CompositionAPI、diff算法以及父子组件传参方式的变化,特别提到了Vue3对Fragment的支持。
摘要由CSDN通过智能技术生成

1. 生命周期

vue2(左)和vue3(右)

创建前:BeforeCreate-----data和methods中的数据都没有初始化

创建后:Created-----实例创建完成                      (vue3将BeforeCreate和Created合并为setup

挂载前:BeforeMount() ----dom树已经生成,但还未挂载                           onbeforemount()

挂载后:Mounted----dom节点全部挂载完成                                                 onmounted()

更新前:BeforeUpdate()----数据更新前调用                                                 onbeforeupdate()

更新后:Updated()----数据已经更新,dom元素重新渲染                              onupdated()

销毁前:BeforeDestory()----实例摧毁前调用,清除定时器或取消事件监听 onbeforeunmount()

销毁后:Destroyed()----实例已经摧毁                                                           onunmount()

2.vue的响应式原理

通过数据劫持和发布者订阅者模式进行的,vue2中数据劫持是通过object.defineProperty(),而vue3中是通过Proxy

3.vue2和vue3最大的区别就是,vue3使用了Composition API (组合api)

4.vue的diff算法

通过旧的虚拟Dom树和新的Dom树进行比较,对有变化的dom节点进行更新。

  • 比较只会在同层级进行,不会跨层级比较
  • vue2是通过双向指针比较虚拟DOM,vue3通过最长递增子序列
  • vue2会对所有dom节点进行比较,Vue3只会对动态节点进行比较

5.父子传参的方式不同

5.1  Vue2中的父子组件传参:
父传子

props:在父组件中,给子组件绑定一个自定义属性,在子组件中,通过props进行接收

子传父

自定义事件:在父组件中,给子组件绑定一个自定义事件,绑定事件的值为接收参数的函数,在子组件中,通过$emit发送数据

5.2  Vue3中的父子组件传参:


vue3中,父组件中引入子组件后,不需要注册可直接使用。父传子时,子组件中通过defineProps方法接收,子传父时,子组件中通过defineEmits方法发送。
 

6.是否支持碎片化(Fragment)

也就是说vue3可以有多个根节点,而vue2只能必须只有一个根节点来包裹

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值