🔧 一、响应式原理
-
Vue2 使用
Object.defineProperty实现数据劫持,通过递归遍历对象属性实现响应式。其局限在于:- 无法监听对象属性的新增或删除(需用
Vue.set/Vue.delete补救) - 对数组的监听需重写
push、pop等7个方法,且无法通过下标直接修改响应
- 无法监听对象属性的新增或删除(需用
-
Vue3 改用
Proxy代理整个对象,优势包括:- 支持动态增删对象属性和数组索引操作
- 无需特殊处理数组,性能更优
🧩 二、API设计模式
-
Vue2(选项式API)
- 逻辑分散在
data、methods、computed等独立选项中,大型项目维护成本高
- 逻辑分散在
-
Vue3(组合式API)
- 通过
setup()函数聚合相关逻辑,支持逻辑复用(如自定义Hook) - 配合
<script setup>语法糖,减少样板代码,提升开发效率
- 通过
️ 三、架构与性能优化
-
虚拟DOM优化
- Vue3 引入静态标记(PatchFlag)和静态提升(Hoist Static),跳过无变化节点比对38
- 编译时优化减少运行时开销,性能提升显著
-
其他核心改进
- 支持多根节点组件(Fragment)
- 生命周期钩子重构(如
beforeDestroy→beforeUnmount) - 内置TypeScript支持,类型推断更友好