1. 响应式原理:底层基石
Vue 2: 基于
Object.defineProperty。痛点: 无法监听对象属性新增/删除(需
Vue.set)、数组索引/长度变化(需特殊方法)。
Vue 3: 基于
Proxy。优势: 原生支持监听对象/数组所有变化(增删改查),性能更好,代码更简洁。这是最核心、最底层的区别!
2. API 设计:开发范式变革
Vue 2: 选项式 API (Options API)。
data,methods,computed,watch等选项组织逻辑。痛点: 复杂组件逻辑分散,复用依赖
mixins(命名冲突、来源不明)。
Vue 3: 组合式 API (Composition API) - 核心亮点!
setup()+ref,reactive,computed,watch等函数。优势:
逻辑聚合: 按功能/关注点组织代码(如“获取用户数据”逻辑集中在一起)。
灵活复用: 通过
Composables(自定义 Hook)轻松复用逻辑,完美替代 mixins。更好的 TS 支持: 类型推导更精准。
Tree-shaking 友好: 未用到的 API 不会打包。
3. 性能优化:更快更轻
Vue 2: 全量 VDOM Diff,编译优化较少。
Vue 3: 大幅提升!
编译时优化: 静态提升、补丁标记 (
PatchFlags)、Block Tree。只动态比较变化部分,跳过静态节点。运行时优化: 更高效的响应式系统 (
Proxy)、缓存事件处理函数。结果: 更新速度 1.3-2倍,内存占用 减少约一半。
4. 关键新特性:解决实际问题
Vue 3 独有/增强:
Fragments (多根节点): 组件模板不再需要单根
<div>,减少冗余 DOM。Teleport (传送门): 将组件内容渲染到 DOM 其他位置(如
<body>),完美解决弹窗、提示层级问题。Suspense (异步加载): 优雅处理异步组件/数据加载的等待状态。
多个
v-model: 一个组件可绑定多个双向数据流。emits选项: 显式声明组件事件,利于文档化、类型检查和优化。createApp: 应用实例隔离,避免全局配置污染。
5. 生命周期 & TypeScript
生命周期: Vue 3 中
beforeDestroy/destroyed重命名为beforeUnmount/unmounted。组合式 API 使用onMounted等onXxx钩子。TypeScript: Vue 3 原生支持极佳(核心用 TS 重写),组合式 API 与 TS 天然契合。Vue 2 支持较弱,需额外配置。
6. 生态与趋势
Vue 2: 生态成熟,但已于 2023.12.31 官方停止支持 (EOL),不再更新/修复。
Vue 3: 当前及未来主力,生态快速成熟(Router/Pinia 已适配),官方持续开发维护。
✅ 面试回答总结(一句话版)
Vue 3 的核心升级在于:用
Proxy重写响应式系统解决监听限制,引入组合式 API (Composition API) 解决复杂组件逻辑组织和复用痛点,并通过编译时/运行时优化大幅提升性能,同时新增 Fragments、Teleport、Suspense 等实用特性,并提供一流的 TypeScript 支持。它是当前 Vue 的未来方向,新项目首选。
🚀 面试加分点(可补充)
提到具体场景: “Teleport 解决了弹窗被父组件
overflow: hidden遮挡的问题”,“Composition API 让我在处理复杂表单逻辑时,能将验证、提交、状态管理清晰聚合在一个useFormcomposable 里”。强调迁移: “Vue 3 提供了
@vue/compat迁移构建,允许渐进式升级现有 Vue 2 项目”。体现判断力: “虽然 Vue 3 兼容 Options API,但新项目强烈推荐 Composition API,它在可维护性和复用性上优势巨大,尤其适合复杂应用和团队协作”。