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

article/2025/7/1 1:21:03

      • 一、版本演进关系
        • 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.hkcw.cn/article/MfBbNOGCSn.shtml

相关文章

python 如何写4或5的表达式

python写4或5的表达式的方法&#xff1a; python中和是用“and”语句&#xff0c;或是用“or”语句。那么4或5的表达式为“4 or 5” 具体示例如下&#xff1a; 执行结果&#xff1a;

电子电气架构 --- 如何应对未来区域式电子电气(E/E)架构的挑战?

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

绿盟 IPS 设备分析操作手册

一、操作手册说明 本手册面向安全监控分析人员&#xff0c;聚焦绿盟 IPS 设备的基础功能操作与典型攻击场景分析&#xff0c;提供安全事件监控、告警详情查看、白名单配置等功能指引&#xff0c;以及 Shiro 反序列化漏洞的检测与应急方法&#xff0c;助力及时发现并处置安全威…

Arch安装megaton

安装devkitPro https://blog.csdn.net/qq_39942341/article/details/148387077?spm1001.2014.3001.5501 安装cargo https://blog.csdn.net/qq_39942341/article/details/148387783?spm1001.2014.3001.5501 确认一下bashrc sudo pacman -S git cmake ninjagit clone https:/…

【Qt开发】对话框

目录 1&#xff0c;对话框的介绍 2&#xff0c;Qt内置对话框 2-1&#xff0c;消息对话框QMessageBox 2-2&#xff0c;颜色对话框QColorDialog 2-3&#xff0c;文件对话框QFileDialog 2-4&#xff0c;字体对话框QFontDialog 2-5&#xff0c;输入对话框QInputDialog 1&…

7.4-Creating data loaders for an instruction dataset

Chapter 7-Fine-tuning to follow instructions 7.4-Creating data loaders for an instruction dataset 我们只需将InstructionDataset对象和custom_collate_fn函数接入 PyTorch 数据加载器 ​ 使用以下代码来初始化设备信息 device torch.device("cuda" if tor…

android 上位机调试软件-安卓串口 com ttl 调试——仙盟创梦IDE

在 Android 开发中&#xff0c;基于com.ttl库的串口调试 Web 编写意义非凡。它打破了硬件与软件之间的壁垒&#xff0c;让 Android 设备能够与外部串口设备通信。对于智能家居、工业控制等领域&#xff0c;这一功能使得手机或平板能成为控制终端&#xff0c;实现远程监控与操作…

【笔记】解决虚拟环境中找不到 chromedriver 的问题

✅解决虚拟环境中找不到 chromedriver 的问题 &#x1f4cc; 问题描述&#xff1a; 在 Windows 中已将 D:\chromedriver\ 添加到系统环境变量 PATH&#xff0c;在系统终端中运行 chromedriver 没有问题。 但在项目虚拟环境&#xff08;如 .venv&#xff09;中运行项目时&…

Linux 基础指令入门指南:解锁命令行的实用密码

文章目录 引言&#xff1a;Linux 下基本指令常用选项ls 指令pwd 命令cd 指令touch 指令mkdir 指令rmdir 指令 && rm 指令man 指令cp 指令mv 指令cat 指令more 指令less 指令head 指令tail 指令date 指令cal 指令find 指令按文件名搜索按文件大小搜索按修改时间搜索按文…

基于STM32的循迹避障小车的Proteus仿真设计

文章目录 一、基于STM32的循迹避障小车1.题目要求2.思路2.1 主控2.2 显示2.3 电源模块2.4 舵机云台2.5 超声波测距2.6 红外循迹模块2.7 蓝牙模块2.8 按键2.9 电机驱动 3.电路仿真3.1 未仿真3.2 自动模式3.3 手动模式3.4 蓝牙模式 4.仿真程序4.1 程序说明4.2 主程序4.3 红外程序…

周星驰导演电影《女足》今日杀青 历时三月圆满收官

迪丽热巴主演的周星驰执导电影《女足》于2025年6月2日正式杀青。此前有报道称,新电影《女足》的路透拍摄画面曝光,其中包含特效动作场面,看起来与《少林足球》相似。该片由周星驰执导,结合了少林功夫与足球元素,讲述了中国女子足球队“峨嵋队”征战亚冠杯的热血故事。整个…

树欲静而风不止,子欲养而亲不待

2025年6月2日&#xff0c;13~26℃&#xff0c;一般 待办&#xff1a; 物理2 、物理 学生重修 职称材料的最后检查 教学技能大赛PPT 遇见&#xff1a;使用通义创作了一副照片&#xff0c;很好看&#xff01;都有想用来创作自己的头像了&#xff01; 提示词如下&#xff1a; A b…

《Global Securities Markets》中保证金与卖空制度知识点总结

一、保证金制度核心要点 &#xff08;一&#xff09;保证金基础概念 在证券交易语境下&#xff0c;保证金是投资者开展特定交易时向经纪商缴纳的现金或证券抵押品&#xff0c;其目的在于保障经纪商因向投资者提供信贷而面临的风险敞口。从本质上看&#xff0c;保证金构建起投…

【工具】文章生成器|突破人类认知极限:HUST-GenPaper 智能写作工具设计与实践

效果&#xff1a; 以下是介绍&#xff0c;我这篇博客就是用我自己这个项目复制prompt去问问小白写的&#xff0c;耗时二十分钟&#xff0c;比我以前写博客需要的时间少多了…… 总之就是突然有个点子&#xff0c;然后顺手就实现了&#xff0c;然后分享给大家&#xff0c;有用…

【AI论文】Skywork Open Reasoner 1技术报告

摘要&#xff1a;DeepSeek-R1的成功凸显了强化学习&#xff08;RL&#xff09;在提升大型语言模型&#xff08;LLMs&#xff09;推理能力方面的重要作用。在本研究中&#xff0c;我们提出了Skywork-OR1&#xff0c;这是一种针对长思维链&#xff08;Chain-of-Thought&#xff0…

webfuture:如何屏蔽后台发文界面的保存为新文章按钮?

问题描述&#xff1a; 如何屏蔽后台发文界面的保存为新文章按钮&#xff1f; 问题解决&#xff1a;修改这个文件 /Admin/Content/Base/css/base.css 定义这个的id saveAsNewItemSubmit #saveAsNewItemSubmit{display: none;}

类和对象:实现日期类

目录 概述 一.实现日期类的基本框架 二.实现比较的运算符重载 1.>的运算符重载 2.的运算符重载 3.其余的比较运算符重载 三.加减天数的运算符重载 1.,的运算符重载 2.-&#xff0c;-的运算符重载 3.对1和2的小优化 四.两个日期类相减的重载 1.&#xff0c;--的重…

uniapp中view标签使用范围

不止用于微信小程序。兼容型号&#xff0c;是uniapp内置组件之一&#xff0c;在uniapp中进行了跨平台适配。支持所有uniapp的平台。如微信小程序、h5、app、支付宝小程序

【接口测试】基础知识

目录 何为接口 概念 类型 何为接口测试 概念 原理 特点 接口自动化的定义 HTTP协议超文本传输协议 概念 特征 URL 统一资源定位符 http请求 http响应 传统风格的接口 RESTful接口 接口测试流程 接口文档 作用 展现形式 文档中每个接口信息的结构 测试的任…

rabbitmq Direct交换机简介

在实际开发中&#xff0c;需求可能变得复杂&#xff0c;如消息的收发和处理。以支付系统为例&#xff0c;成功支付后需要改变订单状态并通知用户&#xff0c;而失败则不需要。为处理这种情况&#xff0c;提出了使用Direct交换机&#xff0c;它可以根据规则将消息路由到指定队列…