一、相同点

  1. 响应式系统(Reactive)

    • 两者都采用 “模板 + 响应式” 的开发模式,视图自动随着状态变化而更新。

    • 都支持双向绑定(v-model)、条件渲染(v-if/v-show)、列表渲染(v-for)等指令。

  2. 组件化

    • 都以组件为最小单元,支持父子组件通信(props / $emit)。

    • 都可以通过 slot 插槽机制实现组件内容分发和复用。

  3. 指令体系

    • Vue 2 的官方指令(v-bindv-onv-modelv-showv-ifv-for……)在 Vue 3 保持一致,仅在细节上有增强。

  4. 生命周期钩子

    • 大部分钩子名称保持一致:created / mounted / updated / destroyed(Vue 3 中改称为 beforeUnmount / unmounted)。

    • 钩子触发顺序与逻辑和 Vue 2 基本相同。


二、核心不同点

维度 Vue 2 Vue 3
核心实现 基于 Object.defineProperty(getter/setter) 基于 ES6 Proxy
响应式 API datacomputedwatch 新增 reactiverefcomputedwatch(Composition API)
组件写法 Options API(datamethodscomputedwatch…) 同时支持 Options API 和 Composition API
性能 启动慢、体积较大,大约 33KB gzip 启动更快、体积更小,大约 23KB gzip
Tree-shaking 支持 几乎不支持 完全支持,可按需打包
TypeScript 支持 社区维护的声明文件,体验一般 官方支持、原生 TS 编写,类型推导更完善
新增特性 Fragment、Teleport、Suspense、 <script setup>
全局 API Vue.componentVue.directiveVue.mixin 迁移到 app.componentapp.directive,并通过 createApp 获取 app 实例
生命周期钩子 beforeDestroydestroyed beforeUnmountunmounted(名称更语义化)
v-model 语法 单一语法(v-model="value" 多个 v-model 支持,语法改为 v-model:propName
异步组件 Vue.component('async', () => import(...)) 同上,但更便捷,并支持 Suspense 包裹等待状态
 

1. 响应式底层

  • Vue 2

    • 利用 Object.defineProperty 拦截属性的 getter/setter,实现依赖收集与派发更新。

    • 对于新增属性或删除属性需手动用 Vue.set / Vue.delete

  • Vue 3

    • 改用 ES6 Proxy,可直接监听整个对象、数组的增删改,无需额外 API。

    • 性能更优,内存占用更低。


2. API 设计:Options vs Composition

  • Options API(两者通用)

      

    export default {
    data() { return { count: 0 } },
    computed: { double() { return this.count * 2 } },
    methods: { increment() { this.count++ } },
    watch: { count(newVal) { console.log(newVal) } }
    }
  • Composition API(Vue 3 新增)

    import { ref, computed, watch } from 'vue'
    
    export default {
    setup() {
    const count = ref(0)
    const double = computed(() => count.value * 2)
    function increment() { count.value++ }
    watch(count, (newVal) => console.log(newVal))
    return { count, double, increment }
    }
    }
    • 优点:逻辑关注点聚合,代码更 “扁平化”,便于复用和测试。


3. 性能与打包体积

  • Vue 3 内部重写了虚拟 DOM、模板编译器、响应式系统,显著提升渲染性能。

  • 原生支持 Tree-shaking,生产包体积更小、加载更快。


4. TypeScript 支持

  • Vue 2 的 TypeScript 支持依赖社区维护的 vue-class-componentvue-property-decorator,体验不够流畅。

  • Vue 3 从内核开始设计,所有 API 都带有类型声明,<script setup lang="ts"> 让组件编写更简洁,类型推导到位。


5. 新增核心特性

特性 说明
Fragment 组件可返回多个根节点,无需额外包裹元素
Teleport 将子组件渲染到 DOM 的任意位置,常用于模态框、提示框等
Suspense 异步组件加载时可展示占位内容,提升用户体验
<script setup> 单文件组件的简写语法,更简洁,自动推导 setup() 返回值
 

三、迁移与兼容性

  1. 全局 API 变化

    // Vue2
    Vue.component('MyComp', MyComp)
    // Vue3 import { createApp } from 'vue'
    const app = createApp(App)
    app.component('MyComp', MyComp)
  2. 生命周期钩子命名

    Vue 2 Vue 3
    beforeCreate beforeCreate
    created created
    beforeMount beforeMount
    mounted mounted
    beforeUpdate beforeUpdate
    updated updated
    beforeDestroy beforeUnmount
    destroyed unmounted
     
  3. v-model 改动

    • Vue 2 只能对 value 做双向绑定。

    • Vue 3 支持多个 v-model,并可绑定自定义 prop。

  4. 跨版本插件

    • 大多数 Vue 2 插件在 Vue 3 下需升级才能兼容,Vue 3 官方提供 兼容构建版本.

    • 推荐逐渐迁移业务逻辑到 Composition API,再切换核心库版本。


四、总结

  • 相同点:核心思想不变,模板+组件+响应式,指令体系、生命周期钩子保留。

  • 不同点:Vue 3 在响应式底层(Proxy)、API(Composition)、性能、体积、Tree‑shaking、TypeScript 支持及新特性上都有重大改进。

对于新项目,推荐直接使用 Vue 3,享受更好性能和更现代的开发体验;对于已有 Vue 2 项目,则可以先引入 Vue 3 的 Composition API 插件,逐步重构业务逻辑,再升级到 Vue 3。

Vue2和Vue3的差异化(通俗易懂)的更多相关文章

  1. 基于tomcat与Spring的实现差异化配置方案

    起因 在实际开发过程中经常需要加载各种各样的配置文件..比如数据库的用户名密码,要加载的组件,bean等等..但是这种配置在各个环境中经常是不一样的....比如开发环境和测试环境,真实的生产环境.. ...

  2. (转)iOS Wow体验 - 第三章 - 用户体验的差异化策略

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第三章译文精选,其余章节将陆续放出.上一篇:Wow ...

  3. Android Gradle基于参数化配置实现差异化构建

    一.背景: 项目中有一些特殊的需求,如个别渠道集成腾讯bugly,个别渠道集成易观统计,不同的渠道集成不同的推送策略(如Oppo渠道优先Opush推送),不同的渠道拥有不同的第三方登录集成等等.这些需 ...

  4. Bing词典vs有道词典比对测试报告——功能篇之辅助功能,差异化功能及软件的效能

    1.辅助功能: 和有道相比,必应的词典加入了换肤功能,用户可以选择喜欢的颜色,而且必应的皮肤也比较多,这一点设计给必应增色不少. 相对而言,有道则加入了调节客户端字体的大小,如下,也比较人性化 2.差 ...

  5. 面对对象之差异化的网络数据交互方式--单机游戏开发之无缝切换到C/S模式

    上一篇这里描写叙述了一个关于差异数据在开发过程中的一个长处,这里来演示另外一个特点:单机开发之无缝切换到C/S模式 一般C/S模式都面临一个问题: 就是开发过程中的调试难题,由于涉及到client和服 ...

  6. 推动FPGA发展箭在弦上,国内厂商须走差异化之路

    7月25日,由中国电子报与深圳投资推广署共同举办的“第六届(2018)中国FPGA产业发展论坛”在深圳召开. 作为四大通用集成电路芯片之一,FPGA(现场可编程门阵列)的重要性与CPU.存储器.DSP ...

  7. 利用maven实现差异化配置

    回顾过去 生产环境,测试环境,开发环境在不同的环境下会有各种各样的配置,比如数据库链接地址,账户名,密码等等.不同环境下都需要配置,但是配置却又不同.以前分享过一篇文章,介绍了我之前A公司的差异化配置 ...

  8. 3D图形引擎决定三维产业差异化

    从2009年中国3D产业初步兴起开始,短短几年间中国的3D技术得到了飞速的发展,3D打印机.3D投影仪.Web3D.虚拟现实.场景漫游等等产业应用应运而生,设备制造商和内容提供商都开始发挥自主创新的优 ...

  9. Vue根据不同的路由文件实现打包差异化

    有些时候我们经常一个项目中开发不同的功能,有可能一个前端项目中夹杂着不同系统之间的需求,最后打包发布的时候经常会将与项目不相关的代码一同打包进去,实际来讲这种操作也是不严谨的.那有没有办法可以根据某些 ...

  10. 用前端姿势玩docker【五】快速构建中类Unix系统与Windows系统的差异化处理

    目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...

随机推荐

  1. Netty源码—7.ByteBuf原理二

    大纲 9.Netty的内存规格 10.缓存数据结构 11.命中缓存的分配流程 12.Netty里有关内存分配的重要概念 13.Page级别的内存分配 14.SubPage级别的内存分配 15.Byte ...

  2. 深入理解Hadoop读书笔记-1

    背景 公司的物流业务系统目前实现了使用storm集群进行过门事件的实时计算处理,但是还有一个需求,我们需要存储每个标签上传的每条明细数据,然后进行定期的标签报表统计,这个是目前的实时计算框架无法满足的 ...

  3. 使用Python可视化磁场

    引言 随着科学技术的发展,物理学中的很多概念变得越来越复杂,但我们可以利用 Python 这一强大的工具,将一些抽象的物理现象变得更加直观易懂.今天,我们将以"磁场可视化"为主题, ...

  4. PriorityQueue作用和源码

    一.PriorityQueue作用和源码 PriorityQueue跟前几个阻塞队列不一样,并没有实现BlockingQueue接口,只是实现了Queue接口,Queue接口中定义了几组放数据和取数据 ...

  5. 配置Thymeleaf模板引擎

    1).thymeleaf-starter: 关闭缓存 2).静态资源都放在static文件夹下就可以按照路径直接访问 3).页面放在templates下,直接访问 springboot ,访问项目的时 ...

  6. Ubuntu v22配置用户临界值

    方法 1:使用 pam_faillock(推荐,Ubuntu 22.04 默认方式) pam_faillock 是较新的 PAM 模块,用于记录失败登录尝试并在达到限制后锁定账户. 修改 /etc/p ...

  7. 康谋分享 | 确保AD/ADAS系统的安全:避免数据泛滥的关键!

    为确保AD/ADAS系统的安全性,各大车企通常需要收集.处理和分析来自于摄像头.激光雷达等传感器的数据,以找出提高系统安全性和性能的方法.然而在数据收集过程中,不可避免地会出现大量无价值数据,造成数据 ...

  8. kettle介绍-Step之Return steps metrics

    Return steps metrics转换步骤信息统计介绍 转换步骤信息统计步骤可以用于统计当前转换中的其它步骤信息,包括步骤执行后的输入行数.输入行数.读入行数.更新行数等.此步骤可以直接拖入转换 ...

  9. 题解:CF361B Levko and Permutation

    前置芝士--最大公约数 - OI Wiki 题目其实很简单,我们可以知道一些最大公约数的性质: 有一个数 xxx,则: gcd⁡(x,x−1)=1gcd⁡(1,x)=1\gcd(x,x-1)=1 \\ ...

  10. Python实验2 turtle 库绘制进阶图形

    实验任务: 绘制嵌套彩色五角星(大小逐层递减) 设计函数绘制自定义正多边形(边数与颜色参数化) 扩展:实现动态旋转花瓣图案. 源代码:import turtle 绘制嵌套彩色五角星 def neste ...