当前位置: 首页 > ds >正文

从0开始学vue:vue3和vue2的关系

      • 一、版本演进关系
        • 1. 继承关系
        • 2. 版本生命周期
      • 二、核心差异对比
      • 三、关键演进方向
        • 1. Composition API
        • 2. 性能优化
      • 四、迁移策略
        • 1. 兼容构建模式
        • 2. 关键破坏性变更
      • 五、生态演进
        • 1. 官方库升级
        • 2. 构建工具链
      • 六、选型建议
        • 1. 新项目
        • 2. 现有项目
      • 七、未来展望


一、版本演进关系

1. 继承关系
  • Vue2(2016年发布)是首个广泛应用的稳定版本
  • Vue3(2020年发布)是全面重构的新一代版本,而非完全颠覆性重构
  • 共享相同的设计哲学:响应式系统、组件化、虚拟DOM等核心概念
2. 版本生命周期
  • Vue2 进入维护模式(LTS至2026年底)
  • Vue3 成为主推版本,获得持续功能更新
  • 存在官方迁移方案(@vue/compat)实现渐进式升级

二、核心差异对比

特性领域Vue2 实现Vue3 改进
响应式系统Object.definePropertyProxy(支持动态属性、数组索引监听)
API 风格Options API 为主Composition API + Options API 双模式
TypeScript基础支持(需类组件)原生类型推断 + 泛型支持
打包体积23KB min+gzip13KB min+gzip(Tree-shaking 优化)
渲染机制虚拟DOM 补丁对比静态提升(Static Hoisting) + 块追踪
Fragment单根节点限制支持多根节点组件
Teleport不支持内置组件实现跨层级传送
Suspense不支持实验性异步组件加载

三、关键演进方向

1. Composition API
// Vue2 Options API
export default {data() { return { count: 0 } },methods: { increment() { this.count++ } }
}// Vue3 Composition API
import { ref } from 'vue'
export default {setup() {const count = ref(0)const increment = () => { count.value++ }return { count, increment }}
}
  • 逻辑复用:通过 setup() + 组合式函数替代 Mixins
  • 类型友好:完整 TypeScript 类型推断
  • 代码组织:按功能而非选项组织代码
2. 性能优化
  • 编译优化
    • 静态提升(HoistStatic):标记静态节点,减少更新计算
    • 缓存事件处理函数(CacheHandlers)
    • 块树追踪(Block Tree):精准追踪动态节点
  • 运行时优化
    • 基于 Proxy 的响应式系统(更快属性访问)
    • 扁平化依赖追踪(effectScope)
    • 快速路径优化(Fast Paths)

四、迁移策略

1. 兼容构建模式
// vue.config.js
module.exports = {configureWebpack: {resolve: {alias: {vue: 'vue/dist/vue.esm-bundler.js'}}}
}
  • 通过 @vue/compat 包实现 API 兼容
  • 逐步迁移:先升级构建工具,再修复弃用警告
2. 关键破坏性变更
Vue2 特性Vue3 替代方案
$on, $off推荐使用 mitt 等第三方库
过滤器(Filters)改用计算属性或方法
事件总线推荐使用 Pinia/Vuex 4
键盘修饰符需显式注册(createApp().config.keyCodes)

五、生态演进

1. 官方库升级
  • Vue Router 4
    • 路由守卫参数变化(to/from 改为 RouteLocationNormalized 类型)
    • 支持动态路由(addRoute()
  • Vuex 4
    • 保持兼容性,推荐迁移至 Pinia(官方状态管理库)
  • Vue Test Utils
    • 新增 @vue/test-utils/next
2. 构建工具链
  • 推荐方案
    • Vite(基于 ES Modules 的快速开发服务器)
    • Unplugin 生态(自动导入、图标集成等)
  • 弃用方案
    • vue-cli(仍可用但不再积极开发)

六、选型建议

1. 新项目
  • 优先选择 Vue3 + Vite + Pinia 技术栈
  • 享受更好的 TypeScript 支持和性能优势
2. 现有项目
  • 短期维护:继续使用 Vue2(至2026年)
  • 长期规划:制定迁移计划(建议使用 Vue Migration Build)

七、未来展望

  • RFC 流程:Vue3 功能更新通过社区提案评审
  • Vue3.3+
    • 实验性 <script setup> 语法糖
    • 改进的 SFC CSS 变量注入
    • 更完善的响应式 API(shallowRef/triggerRef

Vue3 不是对 Vue2 的完全颠覆,而是在保留核心优势的基础上,针对现代前端开发需求进行的全面升级。其设计目标是在保持渐进式框架特性的同时,提供更好的开发体验和运行性能。


在这里插入图片描述

http://www.xdnf.cn/news/10769.html

相关文章:

  • VitalInsight智能体检报告解读
  • YOLOv5 :训练自己的数据集
  • SpringBoot(六)--- AOP、ThreadLocal
  • FastAPI安全认证:从密码到令牌的魔法之旅
  • 打卡第34天:MLP神经网络训练
  • 有公网ip但外网访问不到怎么办?内网IP端口映射公网连接常见问题和原因
  • OpenCV4.4.0下载及初步配置(Win11)
  • 【iOS(swift)笔记-14】App版本不升级时本地数据库sqlite更新逻辑二
  • 从 AMQP 到 RabbitMQ:核心组件设计与工作原理(二)
  • 使用 HTML + JavaScript 实现图片裁剪上传功能
  • Java Script函数
  • 操作系统:文件系统笔记
  • 用“红烧鱼”类比说明卷积神经网络CNN的概念
  • docker使用sh脚本创建容器
  • day 43
  • [SC]SystemC语法小结(三)
  • 函数组件和类组件
  • dns的正向解析,反向解析,多项解析,主从配置
  • PCIe—TS1/TS2 、EQ TS1/EQ TS2
  • YOLOV7改进之融合深浅下采样模块(DSD Module)和轻量特征融合模块(LFI Module)
  • 制作个人Github学术主页
  • PostgreSQL 在生物信息学中的应用
  • 4.RV1126-OPENCV 图像轮廓识别
  • ios tableview吸顶
  • 深度学习和神经网络 卷积神经网络CNN
  • 【大模型学习】项目练习:视频文本生成器
  • 网络安全:网页密码防护与记住密码功能的安全
  • 机器人自动火焰切割H型钢的系统设计与应用
  • 工作流引擎-16-开源审批流项目之 整合Flowable官方的Rest包
  • Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理