面试题1:请系统讲讲 Vue2 与 Vue3 的核心差异(响应式、API 设计、性能与编译器)。

1.响应式:

vue2使用object.defineProperty,劫持能力有局限,动态增删数组索引和对象属性无法收集,需要重写数组方法和提供$set()方法去兼容。而vue3采用的是proxy,底层操作能力更强,对动态增删数组索引和对象的操作也能收集,无需做兼容操作。

缺点是proxy不好使用ployfill,浏览器兼容性降低,不支持IE11

2.API设计

vue2为选项式API,逻辑分散。vue3为组合式API,按逻辑功能组织代码,相关代码集中;

vue2使用minxins处理复用代码。vue3使用自定义hooks函数处理复用代码,更灵活。

3.性能与编译器

1.tree-shaking:vue3打包会去除未使用代码与未使用API;

2.patch flags(补丁标记):通过编译阶段标记节点动态内容,让运行时 diff 实现靶向更新、跳过静态节点、减少无效对比,显著提升视图更新性能。

代码总结:响应式 proxy

js 复制代码
// 1. 定义一个响应式函数(类似 Vue3 的 reactive)
function reactive(target) {
  return new Proxy(target, {
    get(target, key) { // 读取属性时触发
      return Reflect.get(target, key) // 正常返回值
    },
    set(target, key, value) { // 修改/新增属性时触发
      return Reflect.set(target, key, value) // 设置新值
    },
    deleteProperty(target, key) { // 删除属性时触发
      return Reflect.deleteProperty(target, key)
    }
  })
}
相关推荐
anOnion4 分钟前
构建无障碍组件之Slider Pattern
前端·html·交互设计
云水一下11 分钟前
JavaScript 从零基础到精通系列:前世今生与编程启蒙
前端·javascript
月亮邮递员61611 分钟前
Markdown语法总结
开发语言·前端·javascript
Kurisu57532 分钟前
雾锁王国修改器下载2026最新
前端·修改器代码
Rain50944 分钟前
mini-cc 的 MCP 协议:给 AI 装个 USB-C 接口
c语言·开发语言·前端·人工智能·架构·node.js·ai编程
向量引擎2 小时前
从零起步,如何打造专属向量引擎 API 中转工作流?
java·服务器·前端
丷丩2 小时前
MapLibre GL JS第27课:添加COG栅格源
javascript·map·mapbox·maplibre gl js
IT_陈寒2 小时前
Vue这个动态响应坑把我整不会了
前端·人工智能·后端
bestlanzi2 小时前
使用nvm管理node环境
前端·vue.js·npm
SomeOtherTime2 小时前
Geojson相关(AI回答)
java·前端·python