跳到正文
前端知识库
前端框架

Vue 高频追问 Q&A

A: 拦截能力更完整,性能和可维护性更好。(深入阅读:Proxy 替代 Object.defineProperty)

3 分钟

Vue 高频追问 Q&A

1. Q: 为什么 Vue3 要用 Proxy?

A: 拦截能力更完整,性能和可维护性更好。(深入阅读:Proxy 替代 Object.defineProperty

2. Q: computedwatch 区别?

A: computed 偏派生值,watch 偏副作用监听。(深入阅读:computedwatchwatchEffect

3. Q: v-ifv-show 怎么选?

A: 频繁切换用 v-show,条件少变更用 v-if。(深入阅读:v-ifv-show 与条件渲染

4. Q: nextTick 解决什么问题?

A: 在 DOM 更新完成后执行回调。(深入阅读:nextTick 与异步更新队列

5. Q: Vue 性能优化常见手段?

A: 组件拆分、缓存计算、按需加载、合理 key。(深入阅读:Vue 性能原则与渲染优化

6. Q: 为什么组件的 data 必须是函数?

A: 每次创建组件实例时返回独立对象,避免多个实例共享同一份响应式状态。更多 Vue2 源码和场景见 Vue 面试真题补充。(深入阅读:组件 data 的实例隔离

7. Q: key 应该怎么选?

A: 选择稳定且能代表业务身份的唯一值;插入、删除或排序时不要用数组索引,更不能使用随机数。(深入阅读:key、VNode 与列表更新

8. Q: keep-alive 缓存后会触发哪些生命周期?

A: 切换缓存组件时触发 activated/deactivated,不等同于 mounted/destroyed;请求和轮询要按这组生命周期清理。(深入阅读:keep-alive 的缓存与生命周期

9. Q: history 路由刷新为什么会 404?

A: 服务端把前端路径当成真实文件查找了,需要将未知路径回退到 index.html;hash 模式则不依赖这项重写。(深入阅读:Vue Router history 模式与部署

10. Q: 多个请求同时返回 401,如何刷新 Token?

A: 用一个共享的刷新 Promise 保证只有一次刷新请求,其余请求等待它;刷新成功后给原配置写入新 Token 并重放一次,失败则统一清理会话。对创建、支付等写请求,重放前还必须有服务端幂等键,不能把“请求取消”当成回滚。(深入阅读:并发 401、Token 刷新与请求重放

11. Q: 如何防止用户重复提交表单?

A: UI 层锁定提交状态并复用在途请求;服务端用一次操作一个 Idempotency-Key,结合唯一约束或事务保存结果。重试要复用同一 key,不能每次生成新 key。(深入阅读:重复提交与服务端幂等

12. Q: qiankun 子应用卸载后为什么还会影响主应用?

A: 沙箱不能替代对 document、body 事件、定时器、Observer、WebSocket 和第三方订阅的清理。子应用应在 unmount 中执行集中保存的 disposer;静态资源则通过运行时 public path 或稳定资源前缀解析,避免全局劫持 DOM 方法。(深入阅读:qiankun 的资源、沙箱与卸载清理