vue2和vue3的区别

106 阅读2分钟

Vue 2 和 Vue 3 存在多方面区别:

  • 性能表现

    • 虚拟 DOM:Vue 3 重新设计虚拟 DOM 实现,更新和渲染更高效;且优化 diff 算法,能更精准快速找出变化,减少不必要渲染。
    • 静态树提升:Vue 3 能更智能识别静态节点,在编译时提升出来,避免其参与重新渲染,提升性能。
    • 响应式系统:Vue 2 用 Object.defineProperty 实现响应式,存在一些缺陷,比如新增或删除对象属性时无法响应式追踪;Vue 3 使用 Proxy 对象,能对整个对象进行监听,功能更全面,性能也更好。
  • API 和语法

    • Composition API:Vue 3 引入该 API,允许开发者以函数方式组织逻辑代码,使逻辑更模块化、可复用,方便抽离和共享逻辑;Vue 2 主要用 Options API,将组件逻辑分散在 data、methods 等选项中。
    • 内置组件:Vue 3 新增 Teleport 组件,可将子组件渲染到 DOM 其他位置,处理模态框等场景很实用;还引入 Suspense 组件,用于处理异步依赖,展示加载状态。
    • 模板语法:Vue 3 支持 Fragments,即组件可拥有多个根节点,Vue 2 中每个组件必须有单个根元素。
  • 编译器和打包

    • Tree - shaking 支持:Vue 3 编译器生成的代码更易被 Tree - shaking 工具优化,有效减小最终打包体积。
    • TypeScript 支持:Vue 3 源码用 TypeScript 编写,提供更好类型定义和推断能力,对 TypeScript 开发者更友好。
  • 生命周期钩子:Vue 3 对部分钩子重命名,如 beforeDestroy 改为 beforeUnmount,destroyed 改为 unmounted;同时,beforeCreate 和 created 在 setup 函数中被替代,setup 在组件创建之前执行,可进行数据和方法的初始化 。

  • 其他特性

    • 自定义渲染器:Vue 3 提供更强大的自定义渲染器 API,方便开发者为不同平台创建自定义渲染逻辑。
    • 错误处理:Vue 3 提供更详细错误信息,包含错误位置和上下文;还具备全局错误处理机制,可捕获未处理的错误。
    • 核心库体积:Vue 3 核心库体积比 Vue 2 更小,初始加载速度更快。