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

Vue 2 和 Vue 3 的详细对比,从 生命周期、API、响应式系统、函数调用 等多角度展开,最后附表格总结

以下是 Vue 2 和 Vue 3 的详细对比,从 生命周期、API、响应式系统、函数调用 等多角度展开,最后附表格总结:
在这里插入图片描述


1. 生命周期钩子差异

Vue 2Vue 3说明
beforeCreate❌ 移除Vue 3 推荐使用 setup() 替代初始化逻辑。
createdsetup()(组合式API)created 在 Options API 中仍可用,但 setup() 更推荐。
beforeMountonBeforeMount组合式 API 钩子名改为 on + 驼峰转连字符(如 onMounted)。
mountedonMounted同上。
beforeUpdateonBeforeUpdate同上。
updatedonUpdated同上。
beforeDestroyonBeforeUnmount生命周期钩子名改为 onBeforeUnmountonUnmounted
destroyedonUnmounted同上。
示例对比
// Vue 2(Options API)
export default {created() {console.log('Instance created');},mounted() {console.log('DOM mounted');}
};// Vue 3(组合式 API)
import { onMounted, onBeforeMount } from 'vue';export default {setup() {onBeforeMount(() => console.log('Before mount'));onMounted(() => console.log('Mounted'));return {};}
};

2. 响应式系统差异

Vue 2Vue 3说明
Object.definePropertyProxyVue 3 使用 Proxy 替代 defineProperty,支持 for...in 遍历和数组变更检测。
this.datareactive()ref()Vue 3 响应式数据需通过 reactive(对象)或 ref(基本类型)显式声明。
示例对比
// Vue 2
new Vue({data() {return { count: 0 };}
});// Vue 3(Options API)
export default {data() {return { count: 0 };}
};// Vue 3(组合式 API)
import { reactive } from 'vue';export default {setup() {const state = reactive({ count: 0 });return { state };}
};

3. API 使用差异

(1) 方法定义
Vue 2Vue 3说明
methods: { handleClick() { ... } }setup() { const handleClick = () => { ... }; return { handleClick }; }Vue 3 组合式 API 需在 setup() 中定义方法并返回。
(2) 计算属性
Vue 2Vue 3说明
computed: { fullName: () => ... }import { computed } from 'vue'; computed(() => ...)Vue 3 需通过 computed 函数声明,返回值需手动返回到模板。
(3) 侦听器
Vue 2Vue 3说明
watch: { prop: (newVal) => ... }import { watch } from 'vue'; watch(prop, (newVal) => ...)Vue 3 需通过 watch 函数显式调用,支持更灵活的选项。
(4) 事件
Vue 2Vue 3说明
$on/$off/$emit推荐使用 v-model 或组合式 APIVue 3 不推荐全局事件总线,建议通过 Props/Events 或 provide/inject 通信。

4. 其他关键差异

功能Vue 2Vue 3说明
模板语法v-on:click@clickVue 3 简化了指令简写(如 @ 替代 v-on: 替代 v-bind)。
Teleport❌ 无✅ 新特性允许将组件内容渲染到 DOM 的其他位置(如模态框)。
Fragments❌ 无✅ 新特性组件可返回多个根节点,无需包裹 <div>
Composition API❌ 无✅ 核心特性通过 setup() 组合逻辑,解决 Options API 的耦合问题。
Tree Shaking部分支持完全支持Vue 3 的函数式 API 更易实现按需导入。

5. 总结表格

类别Vue 2Vue 3迁移建议
生命周期钩子camelCase(如 mountedkebab-case(如 onMounted使用组合式 API 时改用 on 前缀钩子。
响应式系统definePropertyProxy使用 reactiveref 声明响应式数据。
方法定义methodssetup() 返回函数将逻辑集中到 setup() 中,减少 Options 耦合。
计算属性computed 对象computed 函数通过 computed() 显式声明并返回到模板。
事件系统$on/$emitProps/Events 或组合式避免全局事件总线,改用 Props 或 provide/inject
模板语法v-on:click@click使用简写语法提升可读性。

迁移注意事项

  1. 生命周期钩子:Vue 3 的 setup()beforeCreatecreated 之前执行,需调整初始化逻辑顺序。
  2. 响应式数据:Vue 3 的 reactive 对象需通过解构赋值传递,避免直接修改原始对象。
  3. 组合式 API:推荐逐步迁移关键逻辑到 setup(),而非完全抛弃 Options API。

如需更详细的迁移指南,可参考 Vue 官方迁移手册。

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

相关文章:

  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第三模块·面向对象深度进化 —— 第十二章 接口:比C函数指针更强大的契约
  • 数学基础 -- 欧拉公式的推导过程学习
  • 精准落地设计,现代项目管理中的深度实践
  • FeignClient用法笔记
  • 构建企业官方网站有哪些必备因素?
  • YOLOv8融合CPA-Enhancer【提高恶略天气的退化图像检测】
  • ecovadis认证需要提供哪些文件?ecovadis认证优势是什么?
  • c语言 write函数
  • Java线程池那点事(面试高频)
  • ASR VAD TTS
  • VLA 论文精读(十八)π0.5: a Vision-Language-Action Model with Open-World Generalization
  • JavaFX 第三篇 HostServices和Platform
  • 交通运输行业综合智慧监管平台:商贸物流的安全与效率引擎
  • Windows下QT打包后程序运行后弹出CMD命令窗口的问题解决方法
  • vxe-table封装表头
  • MSHFlexGrid 控件网格赋值指南方案
  • Python爬虫实战:移动端逆向工具Fiddler经典案例
  • 24FIC 决赛 计算机部分
  • 【HFP】蓝牙语音通话控制深度解析:来电拒接与通话终止协议
  • 【前端】【业务场景】【面试】在前端开发中,如何优化 SVG(可缩放矢量图形)的性能,特别是在处理复杂图形和动画时
  • MCP实战-本地MCP Server+Cursor实践
  • AI日报 - 2025年04月25日
  • C语言-函数-1
  • 入门-C编程基础部分:19、输入 输出
  • 位带和位带别名区
  • python自动化学习六:断言
  • 【Linux系统篇】:什么是信号以及信号是如何产生的---从基础到应用的全面解析
  • redis相关问题整理
  • 2024年ASOC SCI1区TOP:改进灰狼算法IGWO+股票指数收益预测,深度解析+性能实测
  • 传感器测量(图片流程)