面试题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)
    }
  })
}
相关推荐
To_OC7 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
To_OC7 小时前
LC 17 电话号码的字母组合:我的回溯算法,就是从这道题开窍的
javascript·算法·leetcode
vipbic8 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy8 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志8 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble9 小时前
c端系统,其实更像一个信息展示平台
前端
你怎么知道我是队长10 小时前
JavaScript的变量和数据类型介绍
开发语言·javascript·ecmascript
李姆斯10 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜11 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司11 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能