从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.pswp.cn/diannao/85452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 核心技术与实战智慧商城项目Day08-10

温馨提示&#xff1a;这个黑马的视频在b占可以找到&#xff0c;里面有完整的教学过程 然后这个项目有完整的代码&#xff0c;我已经上传了&#xff0c;如果审核成功大家就可以看了&#xff0c;但是需要审核多久我也不是很确定 1.项目演示 2. 项目收获 3. 创建项目 4. 调整初始化…

AR/MR实时光照阴影开发教程

一、效果演示 1、PICO4 Ultra MR 发光的球 2、AR实时光照 二、实现原理 PICO4 Ultra MR开发时&#xff0c;通过空间网格能力扫描周围环境&#xff0c;然后将扫描到的环境网格材质替换为一个透明材质并停止扫描&#xff1b;基于Google ARCore XR Plugin和ARFoundation进行安卓手…

【Python训练营打卡】day42 @浙大疏锦行

DAY 42 Grad-CAM与Hook函数 知识点回顾 1. 回调函数 2. lambda函数 3. hook函数的模块钩子和张量钩子 4. Grad-CAM的示例 作业&#xff1a;理解下今天的代码即可 Grad-CAM 在深度学习中&#xff0c;我们经常需要查看或修改模型中间层的输出或梯度。然而&#xff0c;标准的…

创建ipv6 only和ipv6+ip4的k8s集群的注意事项

关键字 : CNI calico vxlan flannel ipv6-only ipv6ipv4 在搭建ipv6-only或ipv6ipv4的k8s集群时&#xff0c;在worker节点加入集群后&#xff0c;发现worker节点上的CNI启动失败。 以下是calico的启动失败情况 : kubectl get pod -A输出如下 : NAMESPACE NAME …

鸿蒙OSUniApp离线优先数据同步实战:打造无缝衔接的鸿蒙应用体验#三方框架 #Uniapp

UniApp离线优先数据同步实战&#xff1a;打造无缝衔接的鸿蒙应用体验 最近在开发一个面向鸿蒙生态的UniApp应用时&#xff0c;遇到了一个有趣的挑战&#xff1a;如何在网络不稳定的情况下保证数据的实时性和可用性。经过一番探索和实践&#xff0c;我们最终实现了一套行之有效…

day 43

应用cnn对kaggle上的图像数据集进行练习 数据集地址&#xff1a;Cat and Dog import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pyplot as plt im…

Spring Boot 如何实现定时任务

Spring Boot 如何实现定时任务 在现代的微服务架构中&#xff0c;定时任务是一个常见的需求。无论是数据定时同步、定时清理缓存&#xff0c;还是定时发送通知&#xff0c;Spring Boot 提供了非常强大且灵活的定时任务支持。本文将详细介绍如何在 Spring Boot 中实现定时任务&…

“粽”览全局:分布式系统架构与实践深度解析(端午特别版)

第一部分&#xff1a;引言——技术世界的“端午”第二部分&#xff1a;分布式系统概述——粽子节点初探第三部分&#xff1a;核心技术详解——技术“粽子”大解构 粽叶篇&#xff1a;通信协议糯米篇&#xff1a;一致性算法馅料篇&#xff1a;任务调度与计算包扎篇&#xff1a;系…

AppTrace 视角下 App 一键拉起:提升应用转化率的高效方案​

官网地址&#xff1a;AppTrace - 专业的移动应用推广追踪平台 在大规模开展 App 推广、用户召回、广告投放、邀请传播等活动时&#xff0c;高效的深度链接方案至关重要。它不仅能缩短用户路径&#xff0c;带来无缝、流畅的跳转体验&#xff0c;更核心的是通过参数传递打通 web…

手拆STL

vector v e c t o r vector vector&#xff0c;动态数组。 先来看一下它的一些基本操作及其拆后残渣。 1.a.push_back(x)&#xff0c;将 x x x加入动态数组 a a a的末尾。 实现&#xff1a;a[cnt]x 2.a.size()&#xff0c;查询动态数组 a a a中元素的数量。 实现&#xff1a;cn…

6.01打卡

浙大疏锦行 DAY 40 训练和测试的规范写法 知识点回顾&#xff1a; 1. 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中 2. 展平操作&#xff1a;除第一个维度batchsize外全部展平 3. dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模…

CSS专题之层叠上下文

前言 石匠敲击石头的第 15 次 在平常开发的时候&#xff0c;有时候会遇到使用 z-index 调整元素层级没有效果的情况&#xff0c;究其原因还是因为对层叠上下文不太了解&#xff0c;看了网上很多前辈的文章&#xff0c;决定打算写一篇文章来梳理一下&#xff0c;如果哪里写的有问…

RabbitMQ集群与负载均衡实战指南

文章目录 集群架构概述仲裁队列的使用1. 使用Spring框架代码创建2. 使用amqp-client创建3. 使用管理平台创建 负载均衡引入HAProxy 负载均衡&#xff1a;使用方法1. 修改配置文件2. 声明队列 test_cluster3. 发送消息 集群架构 概述 RabbitMQ支持部署多个结点&#xff0c;每个…

Prometheus + Grafana + Cadvisor:构建高效企业级服务监控体系

在现代软件开发和运维领域&#xff0c;容器化技术的应用越来越广泛&#xff0c;其中 Docker 作为最受欢迎的容器化解决方案之一&#xff0c;其容器的监控管理变得至关重要。本文将详细介绍如何使用 cadvisor、Prometheus 和 Grafana 来监控 Docker 容器的状态。 一、安装镜像 …

小提琴图绘制-Graph prism

在 GraphPad Prism 中为小提琴图添加显著性标记(如*P<0.05)的步骤如下: 步骤1:完成统计检验 选择数据表:确保数据已按分组排列(如A列=Group1,B列=Group2)。执行统计检验: 点击工具栏 Analyze → Column analyses → Mann-Whitney test(非参数检验,适用于非正态数…

【开源工具】跳过网页APP禁止粘贴限制:自动输入键盘模拟工具

&#x1f4cc; 【黑科技】跳过网页APP禁止粘贴限制&#xff1a;自动输入键盘模拟工具 &#x1f308; 个人主页&#xff1a;创客白泽 - CSDN博客 &#x1f525; 系列专栏&#xff1a;&#x1f40d;《Python开源项目实战》 &#x1f4a1; 热爱不止于代码&#xff0c;热情源自每一…

深度学习篇---face-recognition的优劣点

face_recognition库是一个基于 Python 的开源人脸识别工具&#xff0c;封装了 dlib 库的深度学习模型&#xff0c;具有易用性高、集成度强的特点。以下从技术实现、应用场景等维度分析其优劣势&#xff1a; 一、核心优势 1. 极简 API 设计&#xff0c;开发效率极高 代码量少…

Git深入解析功能逻辑与核心业务场景流程

一、Git核心功能逻辑架构 #mermaid-svg-9tj1iCr99u6QenJM {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9tj1iCr99u6QenJM .error-icon{fill:#552222;}#mermaid-svg-9tj1iCr99u6QenJM .error-text{fill:#552222;st…

【大模型】情绪对话模型项目研发

一、使用框架&#xff1a; Qwen大模型后端Open-webui前端实现使用LLamaFactory的STF微调数据集&#xff0c;vllm后端部署&#xff0c; 二、框架安装 下载千问大模型 安装魔塔社区库文件 pip install modelscope Download.py 内容 from modelscope import snapshot_downlo…

Java基础 Day26

一、网络编程简介 1、概念 网络编程指在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行数据传输 2、软件架构 &#xff08;1&#xff09;CS架构&#xff08;客户端和服务端&#xff09; 在用户本地有一个客户端程序&#xff0c;在远程有一个服务器端程…