vue2和vue3的区别整理(面试这一篇就够了)

Vue3在源码上使用了typescript重构,提升了对typescript的支持。在性能方面,Vue3采用Proxy替代了object.defineProperty,优化了Blocktree和Diff算法。API上,Vue3引入CompositionAPI,提高代码组织性。Hook函数的引入解决了Vue2中mixins的命名冲突问题,增强了代码复用性。生命周期方面,Vue3的生命周期钩子有了变化,如beforeCreate变为setup。Vue3因其性能提升和typescript支持,成为发展趋势。

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

vue2和vue3的区别

本文章将从源码层面、性能层面、api方面、hook函数增加代码复用性、代码写法方面、生命周期方面等6个方面简单描述vue2和vue3的区别

  • 源码层面:
版本区别
vue2javascript 使用flow进行类型检测
vue3源码使用typescript进行重构,vue对typescript支持更加友好了
  • 性能层面
版本区别
vue2使用object.defineProperty来劫持数据的setter和getter方法,对象改变需要借助api去深度监听
vue3使用Proxy来实现数据劫持,删除了一些api($on,$once,$off) fiter等,优化了Block tree,solt,diff 算法等
  • api方面
版本区别
vue2OptionsAPI 在options里写data,methods,created等描述组件对象,多个逻辑可能在不不同地方,代码内聚性低
vue3CompositionAPI 将模块相关代码统一放在一个地方处理,不需要在多个options里查找
  • hook函数增加代码复用性
    • vue2使用mixins进行代码逻辑共享,mixins也是由一大堆options组成,如果有多个mixins则可能造成命名冲突等问题。
    • vue3可以通过hook函数 将一部分独立的逻辑抽离出去,并且也是响应式的
  • 代码写法方面
    • vue3支持在template中写多个根,vue2只能有一个
    • 当内部有异步函数,需要使用到await的时候,可以直接使用,不需要在setup前面加async
  • 生命周期方面(大多生命周期前加on)
vue2vue3生命周期
beforeCreate()setup()组件开始创建数据实例之前
created()setup()组件数据创建数据实例完成
beforeMount()onBeforeAMount()DOM挂载之前
mounted()onMounted()DOM挂载完成(页面完成渲染)
beforeUpdate()onBeforeUpdate()组件数据更新之前
undated()onUpdated()组件数据更新之后
beforeDestroy()onBeforeunmount()组件销毁之前
destroyed()onUnmounted()组件销毁之后
  • 总结:
    • vue3,使用率逐年升高,版本目前很稳定,生态也比较完善,将会vue未来发展的主要趋势
    • vue3性能以及typescript的支持性也超越vue2
    • ts目前在前端也比较受欢迎,建议入坑
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值