🛠️ 一、升级前的关键准备
-
环境检查与备份
-
备份现有项目,确保 Node.js ≥ v14.16、Vue CLI ≥ v4.5。
-
使用
npm list vue
检查依赖版本,移除不兼容 Vue 3 的库(如旧版 Vuex、Vue Router)。
-
-
依赖升级命令
javascriptbash npm install vue@next vue-router@next vuex@next npm install @vue/compat # 官方兼容层,平滑过渡:cite[4]:cite[8]
⚙️ 二、核心代码迁移步骤
1. 全局 API 重构
-
Vue 2 → Vue 3
javascript// Vue 2 new Vue({ render: h => h(App) }).$mount('#app') // Vue 3 import { createApp } from 'vue' createApp(App).mount('#app'):cite[2]:cite[4]
2. 组件逻辑升级
-
Composition API 替代 Options API
javascript<script setup> import { ref, onMounted } from 'vue' const count = ref(0) onMounted(() => console.log('Mounted!')):cite[2]:cite[11] </script>
优势 :逻辑复用更灵活(如抽离
useFetch
函数),告别this
混乱。
3. 生命周期钩子更名
| Vue 2 | Vue 3 |
|-----------------|-----------------|-----|
| beforeDestroy
| beforeUnmount
|
| destroyed
| unmounted
| 410 |
🚀 三、Vue 3 必学新特性实战
1. 响应式系统重构
-
Proxy 替代 defineProperty
支持数组索引修改、动态添加属性:
javascriptconst state = reactive({ list: [1, 2] }) state.list[0] = 99 // 直接生效!
2. 模板增强功能
-
多根节点支持
无需外层
<div>
包裹:javascript<template> <header>...</header> <main>...</main> </template>
-
<Teleport>
传送组件将模态框渲染到 body 末尾:
javascript<Teleport to="body"> <div class="modal">...</div> </Teleport>:cite[1]:cite[6]
3. 性能优化技巧
-
Tree Shaking:只打包使用到的 API,减少体积 30%。
-
v-memo
指令:缓存静态节点,避免重复渲染。
⚠️ 四、常见问题与解决方案
-
IE 兼容性问题
Vue 3 基于 Proxy,不支持 IE11。如需兼容,使用
@vue/compat
或 Babel polyfill。 -
第三方库迁移
-
Element UI → Element Plus
-
Vuetify 2 → Vuetify 。
-
-
事件总线替代方案
弃用
$on
/$off
,改用mitt
库或 Vuex:javascriptimport mitt from 'mitt' const emitter = mitt() emitter.emit('event', 'data')
💻 五、实战案例:Vue 2 组件升级
Vue 2 选项式组件:
javascript
<script>
export default {
data() { return { count: 0 } },
methods: { increment() { this.count++ } }
}
</script>
Vue 3 组合式重构:
javascript
<script setup>
import { ref } from 'vue'
const count = ref(0)
const increment = () => count.value++
</script>
✅ 六、升级后验证
-
运行测试:
npm run test:unit
确保无报错。 -
性能分析:用 Chrome DevTools 对比渲染耗时。
-
渐进式迁移:大型项目可分模块升级,用
@vue/compat
混合运行。
资料推荐:
-
官方迁移指南:Vue 3 Migration Guide
-
书籍:《Vue.js 3.0 从入门到精通》(李小威,清华大学出版社)含实战项目。
通过以上步骤,开发者可系统掌握 Vue 3 的核心优势,逐步将项目升级至更高效、灵活的架构。