
Vue2 采用 Options API,按「data、methods、computed、watch」等选项组织代码;Vue3 新增 Composition API(通过 setup 函数),按「业务逻辑」组织代码,解决了 Options API 在复杂组件中「逻辑分散、复用困难」的问题。
核心优势:
- 逻辑聚合:同一业务逻辑(如计数、请求)的代码集中在一起,便于维护;
- 逻辑复用:可抽离为「组合式函数(Composables)」,如
useFetch、useCounter,跨组件复用(替代 Vue2 的 mixin,避免命名冲突);
- Tree-shaking:按需导入 API,减少打包体积。
Vue2 的响应式依赖 Object.defineProperty,存在天生缺陷;Vue3 改用 Proxy,彻底解决了这些问题:

Vue3 对模板语法进行了多处增强,解决了 Vue2 的诸多限制:
Vue2 模板要求必须有一个根节点,Vue3 支持多根节点,无需额外嵌套 <div>:
允许将组件内容挂载到页面任意 DOM 节点(如 <body>),解决弹窗、通知等组件的层级问题:

用于优雅处理异步组件的加载状态(替代 Vue2 的手动 v-if 控制):

v-memo:缓存模板片段,仅当依赖项变化时重新渲染(优化列表渲染性能);
v-bind 动态参数:支持更灵活的属性绑定(如动态绑定 class、style 的 key)。
Vue3 在编译阶段和运行时都进行了深度优化,性能远超 Vue2:
- 静态提升:将静态节点(如纯文本、无绑定的元素)提升到渲染函数外部,避免每次渲染重新创建;
- PatchFlags:标记动态节点的更新类型(如仅文本变化、仅 class 变化),减少 Diff 过程的对比开销;
- 缓存事件处理函数:避免每次渲染创建新的函数引用,减少组件重渲染。
Vue3 支持「按需引入核心 API」,配合 Tree-shaking,打包体积比 Vue2 减小约 41%(仅引入必要的功能)。
- 组件初始化速度提升 55%+;
- 内存占用减少约 50%;
- 列表渲染性能提升约 100%(尤其大数据量场景)。
Vue3 配套生态全面升级,更适配现代工程化开发:

Vue3 保留了 Vue2 的 Options API 生命周期,但新增了「组合式生命周期钩子」(适配 Composition API),且废弃了部分钩子:

注意:Vue3 的 setup 函数执行时机相当于 Vue2 的 beforeCreate 和 created,因此无需再写这两个钩子。
- 升级依赖:
vue → 3.x,vue-router → 4.x,pinia 替代 vuex;
- 替换根组件:Vue3 的
createApp 替代 Vue2 的 new Vue:

- 逐步迁移语法:优先迁移响应式 API(
ref/reactive 替代 data)、生命周期钩子,再迁移复杂逻辑到 Composition API;
- 解决兼容性问题:使用
@vue/compat 插件临时兼容未迁移的代码,逐步移除。
Vue3 相对于 Vue2 的核心进步在于:
- 架构更灵活:Composition API 解决了复杂组件的逻辑组织和复用问题;
- 性能更出色:Proxy 响应式、虚拟 DOM 重写等优化,大幅提升渲染速度和内存效率;
- 生态更现代:Vite、Pinia 等工具提升开发体验,原生 TS 支持适配大型项目;
- 语法更强大:多根节点、Teleport、Suspense 等新特性,满足更多业务场景。
对于新项目,优先选择 Vue3 是必然趋势;对于老项目,可根据业务需求和升级成本逐步迁移。Vue3 保持了对 Vue2 大部分语法的兼容,降低了迁移门槛,同时其强大的特性和性能优势,能为项目长期发展提供更好的支撑。