答:Vue3带来了三大革命性升级:
答:举个就明白:
// Options API(适合简单场景)
export default {
data() { return { count: 0 } },
methods: { increment() { this.count++ } }
}
// Composition API(适合复杂逻辑)
import { ref } from 'vue'
export default {
setup() {
const count = ref(0)
const increment = () => count.value++
return { count, increment }
}
}
个人建议:中小项目用Options API更简单,大型项目用Composition API更香!
答:Proxy有三把刷子:
答:记住这张表就稳了:
ref | reactive | |
---|---|---|
数据类型 | 任意类型 | 仅对象 |
访问方式 | .value | 直接访问 |
解构 | 保持响应 | 失去响应 |
原理 | Object包装 | Proxy代理 |
使用口诀:基本类型用ref,复杂对象用reactive!
Vue3的8种通信姿势:
三步搞定方案:
// 1. 创建指令
app.directive('permission', {
mounted(el, binding) {
const hasPermission = checkPermission(binding.value)
if(!hasPermission) el.parentNode?.removeChild(el)
}
})
// 2. 在组件中使用
<button v-permission="'user:delete'">删除</button>
// 3. 配合后端接口返回的权限列表校验
五个优化大招:
虚拟滚动方案实测有效:
<VirtualList :size="40" :remain="8">
<ListItem v-for="item in list" :key="item.id"/>
VirtualList>
原理:只渲染可视区域DOM元素(DOM节点减少90%!)
看个反面教材:
<div v-for="user in users" v-if="user.isActive">
问题点:每次渲染都会遍历整个数组!应该改成:
<template v-for="user in users">
<div v-if="user.isActive">{{ user.name }}div>
template>
性能提升秘籍:先用computed过滤数据!
Vue3的响应式黑魔法:
const list = reactive([1,2,3])
list.length = 1 // ❌ 不会触发更新
list.splice(1) // ✅ 正确姿势
记住:数组操作要用变异方法(push/pop/splice等)
应用场景:把模态框渲染到body层!
<teleport to="body">
<div class="modal">...div>
teleport>
好处:避免z-index层级问题(前端仔的救星!)
异步组件加载神器:
<Suspense>
<template #default>
<AsyncComponent />
template>
<template #fallback>
<Loading />
template>
Suspense>
注意:还在实验阶段,生产环境慎用!
三步走方案:
{
path: '/:pathMatch(.*)*',
component: () => import('@/views/404.vue'),
meta: { requiresAuth: true }
}
2024年建议:
✅ 掌握Composition API核心用法
✅ 理解响应式原理实现差异
✅ 熟悉至少3种组件通信方式
✅ 能说出5个性能优化技巧
✅ 了解最新特性应用场景
面试前把这36题刷三遍,通过率提升80%!建议搭配官方文档食用更佳~