Hi FE !
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
Ai
git
前端面试题
前端小tip
  • vite
  • webpack
npm
  • vue2
  • vue3
react
GitHub
  • vue3性能提升精简篇

vue3性能提升精简篇

1. 响应式原理

vue2中响应式原理是使用`Object.defineProperty`对数据进行劫持,然后通过`getter`和`setter`来监听数据的变化,从而实现响应式。但是这种方式存在一些问题,比如无法监听数组的变化,无法监听对象的新增和删除属性等。

vue3中响应式原理是使用`Proxy`来实现的,`Proxy`可以监听对象和数组的变化,包括新增和删除属性等。同时,vue3中使用了`ES6`的`Map`来存储响应式数据,这样可以提高性能。

2. 编译优化

引入静态标记(PatchFlag),编译时标记模板中静态和动态内容,更新时只关注动态部分
实现了按需更新,避免了 Vue2 中全量对比虚拟 DOM 的性能开销
静态提升(HoistStatic),将静态节点提升到渲染函数外,避免重复创建
预字符串化(Stringify Static),将连续的静态节点编译为字符串,减少创建虚拟节点的开销
缓存事件处理函数,避免不必要的重新创建

3. 虚拟 DOM 优化

重写了虚拟 DOM 的实现,优化了对比算法
结合编译时信息,减少了运行时对比的节点数量和复杂度
针对静态节点和纯文本节点有专门的优化处理

4. 体积优化

采用 Tree-shaking 技术,只打包应用中实际使用的功能
拆分了核心功能模块,如 reactivity、compiler、runtime 等可以单独引入
相比 Vue2,未使用的 API 不会被打包,减小了最终 bundle 体积

5. 其他优化

支持 Fragments(片段),允许组件返回多个根节点,减少不必要的 wrapper 节点
支持 Suspense 和异步组件,更好地处理异步加载场景
组合式 API(Composition API)的设计使代码组织更灵活,也间接提升了代码执行效率
更好的 TypeScript 支持:Vue 3.0 使用 TypeScript 重写,提供了更好的类型推断和静态分析能力,使得代码更健壮,易于维护和扩展。
Edit this page
最近更新: 2025/10/17 02:02
Contributors: qdleader
qdleader
本站总访问量 129823次 | 本站访客数 12人