Vue 和 React 最大的区别在于设计理念:
Vue 是一个渐进式框架,采用响应式数据绑定,通过依赖收集实现精细化更新;而 React 更偏函数式编程,通过状态变化触发组件重新渲染,再通过 Fiber 和 diff 算法优化性能。
在开发体验上,Vue 使用模板语法,更容易上手;React 使用 JSX,灵活性更高但学习成本也更大。
在生态方面,Vue 官方提供了比较完整的解决方案,而 React 更加开放,适合大型复杂项目的架构设计。
✅ 1、Vue3 为什么用 Proxy 替代 defineProperty?
🎯 面试官想考:响应式原理深度
✅ 标准回答:
Vue2 使用
Object.defineProperty实现响应式,但它有几个缺点:
- 无法监听对象新增/删除属性
- 需要递归遍历对象,初始化成本高
- 对数组支持不完整(需要重写方法)
Vue3 使用
Proxy:
- 可以直接监听整个对象
- 支持新增/删除属性监听
- 对数组天然支持
- 按需代理,性能更好
👉 本质提升是:从“劫持属性”变成“代理对象”
✅ 2、React Fiber 是什么?
🎯 面试官想考:底层架构理解
✅ 标准回答:
React Fiber 是 React 16 引入的新的协调(reconciliation)架构。
核心解决的问题是:
👉 旧版 React 更新是同步递归的,一旦开始无法中断,会造成卡顿
Fiber 的核心能力:
- 可中断渲染
- 优先级调度(任务切片)
- 时间分片(Time Slicing)
👉 本质上:
- 把原来的递归更新 → 改成链表结构(Fiber节点)
- 可以暂停、恢复、重用渲染任务
👉 一句话总结:
Fiber = 可中断 + 可调度的虚拟 DOM 更新机制
✅ 3、Vue 和 React 谁性能更好?
🎯 面试官想考:是否能客观分析
✅ 标准回答:
不能简单说谁更好,要看场景:
Vue:
- 依赖追踪(响应式)
- 精准更新
👉 优势:
- 小中型项目性能稳定
React:
- 重新执行组件 + diff
- Fiber 调度优化
👉 优势:
- 大型复杂应用更有优势(调度能力强)
✅ 总结:
- Vue:更新更精细
- React:调度能力更强
👉 面试加分一句:
性能差异更多取决于开发方式,而不是框架本身
✅ 4、React Hooks 为什么会有闭包问题?
🎯 面试官想考:JS + React 深度
✅ 标准回答:
Hooks 本质是函数,而函数会形成闭包。
在 React 中:
- 每次 render 都会生成新的函数作用域
- useEffect / setTimeout 等会“捕获旧状态”
👉 示例问题:
useEffect(() => { setTimeout(() => { console.log(count) // 可能是旧值 }, 1000) }, [])👉 解决方案:
- 使用依赖数组
- 使用 useRef 保存最新值
- 使用函数式更新:
setCount(prev => prev + 1)👉 本质:
不是 Hooks 的问题,是 JS 闭包 + 渲染机制导致的
✅ 5、Vue 为什么不用 Hooks(或者说 Vue 的 Hooks 有什么不同)?
🎯 面试官想考:设计理念差异
✅ 标准回答:
Vue3 其实也有类似 Hooks 的机制(Composition API)。
但区别是:
React Hooks:
- 强依赖调用顺序
- 必须写在顶层
Vue Composition API:
- 不依赖调用顺序
- 基于响应式系统
👉 示例:
const count = ref(0)👉 Vue 的优势:
- 不会有 Hooks 顺序问题
- 不容易出现闭包陷阱
👉 本质区别:
- React:函数驱动
- Vue:响应式驱动
✅ 6、Vue 的 nextTick 和 React 的 setState 有什么区别?
🎯 面试官想考:更新机制
✅ 标准回答:
Vue nextTick:
- 用于在 DOM 更新后执行回调
- 基于微任务(Promise)
React setState:
- 是异步的(批处理)
- 不保证立即更新
👉 区别:
- Vue:明确提供 DOM 更新时机控制
- React:通过调度机制控制更新
👉 一句话总结:
Vue 更可控,React 更抽象
✅ 7、Vue 和 React 的 diff 算法区别?
🎯 面试官想考:虚拟 DOM 理解
✅ 标准回答:
两者都有 diff 算法,但优化方式不同:
React:
- 基于 Fiber
- 同层比较
- key 优化
Vue:
- 双端对比算法(Vue2)
- Vue3 使用 Patch Flag + 静态提升
👉 Vue 优化点:
- 编译阶段标记动态节点
- 减少 diff 范围
👉 React:
- 更通用,但运行时开销更大
👉 总结:
- Vue:编译时优化多
- React:运行时优化多
✅ 8、什么时候选 Vue?什么时候选 React?
🎯 面试官想考:工程经验
✅ 标准回答:
选 Vue:
- 快速开发项目
- 后台管理系统
- 团队偏前端初中级
选 React:
- 大型复杂系统
- 需要高扩展性
- 多端(React Native)
👉 面试加分总结:
Vue 提供“效率”,React 提供“上限”
🎯 最后给你一个“大厂总结金句”(一定要背🔥)
Vue 和 React 的本质区别在于:
- Vue 是基于响应式系统的声明式框架,强调数据驱动视图的自动更新
- React 是基于函数式编程的 UI 库,通过状态驱动组件重新渲染,并依赖 Fiber 实现可调度更新
👉 一个偏“自动化”,一个偏“可控性”