【Vue3】前端Vue3最常用的 20 道面试题总结(含详细代码解析)

1,860 阅读2分钟

以下是Vue3最核心的20道面试题总结,包含详细解析和代码示例:

一、核心机制

响应式原理(Proxy vs defineProperty)‌

javascript Copy Code // Proxy实现 const reactive = (target) => new Proxy(target, { get(obj, key) { track(obj, key); return Reflect.get(obj, key) }, set(obj, key, value) { Reflect.set(obj, key, value); trigger(obj, key) } })

优势‌:自动监听动态属性/数组下标变化,性能提升40%‌。 Vue2缺陷‌:需Vue.set处理新增属性,数组需重写方法‌。

Composition API vs Options API‌

javascript Copy Code // Composition API逻辑复用示例 const useCounter = () => { const count = ref(0) const increment = () => count.value++ return { count, increment } }

优势‌:按功能聚合代码,TS支持更好‌。

二、高频考点

ref vs reactive‌

ref:处理基本类型,需.value访问 reactive:处理对象,直接访问属性‌ javascript Copy Code const num = ref(0) // num.value++ const obj = reactive({ a: 1 }) // obj.a = 2

生命周期变化‌

Vue2 Vue3 (Composition) beforeCreate setup() destroyed onUnmounted() javascript Copy Code onMounted(() => console.log('组件挂载'))‌:ml-citation{ref="4,5" data="citationList"}

v-for与v-if优先级‌

Vue2‌:v-for > v-if (不推荐共用) Vue3‌:v-if > v-for (报错强制分离) 优化方案‌:用计算属性过滤数据‌。 三、新增特性

Teleport组件传送‌

html Copy Code

弹窗内容

解决模态框嵌套层级问题‌。

Suspense异步组件‌

html Copy Code <template #default> <template #fallback>加载中...

Fragment多根节点‌ 允许组件返回多个元素:

html Copy Code

四、进阶优化

Tree shaking机制‌ 只打包使用到的模块,体积减少41%‌。

虚拟DOM优化‌ 编译时标记动态节点,跳过静态内容对比‌。

自定义渲染器‌ 支持WebGL/Native等非DOM环境‌。

五、实战技巧 逻辑复用模式‌ 使用useFetch封装请求: javascript Copy Code export function useFetch(url) { const data = ref(null) const error = ref(null) fetch(url).then(res => data.value = res).catch(err => error.value = err) return { data, error } }

路由懒加载‌ javascript Copy Code const routes = [{ path: '/home', component: () => import('./Home.vue') // 代码分割 }]

性能监控‌ 使用performance.mark检测组件渲染时间‌。 六、陷阱规避 响应式解构丢失‌ javascript Copy Code // ❌ 错误:解构会失去响应性 const { x } = reactive({ x: 1 }) // ✅ 正确:使用toRefs const { x } = toRefs(reactive({ x: 1 }))

watch vs watchEffect‌ watch:需显式指定依赖源 watchEffect:自动收集依赖‌ 全局API变更‌ javascript Copy Code // Vue2 Vue.component('comp', { /* ... / }) // Vue3 const app = createApp({}) app.component('comp', { / ... */ })

完整代码示例和原理图解可参考Vue3源码解析专题‌。掌握这些核心点可覆盖90%面试场景,重点理解响应式设计差异和Composition API的应用逻辑。