haizlin / fe-interview

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家),6000+道前端面试题全面覆盖,HTML/CSS/JavaScript/Vue/React/Nodejs/TypeScript/ECMAScritpt/Webpack/Jquery/小程序/软技能……
http://www.h-camel.com
MIT License
25.43k stars 3.26k forks source link

[vue] 第1443天 Vue3性能提升体现在哪些方面? #5401

Open haizhilin2013 opened 1 year ago

haizhilin2013 commented 1 year ago

第1443天 Vue3性能提升体现在哪些方面?

3+1官网

我也要出题

ShihHsing commented 1 year ago

Vue.js 是一款流行的前端框架,由于其简单易用和出色的性能表现,在开发完整的 Web 应用程序时得到了广泛应用。Vue.js 3.x 版本中带来了很多更新和改进,包括更好的性能。

Composition API

Vue3 引入了一个新的组合式 API,这是一个新的 API 集合,旨在解决 Vue2 中函数逻辑重用的问题。它提供了更灵活,更可读且更容易测试的代码结构,并具有更好的 TypeScript 支持。

Composition API 解决了以下问题:

下面是示例代码:

import { reactive, computed } from 'vue'

export default {
  setup() {
    const state = reactive({
      count: 0,
      doubleCount: computed(() => state.count * 2)
    })

    const increment = () => {
      state.count++
    }

    return {
      state,
      increment
    }
  }
}

静态树提升

Vue3 引入了静态树提升(Static Tree Hoisting),这是一个在编译时确定哪些组件是静态的,然后将其提升为常量的优化。这样可以大大减少渲染时间和内存开销。在 Vue2 中,每次重新渲染组件时,都需要创建并比较虚拟 DOM 树,而在 Vue3 中,由于静态节点已经被提升,所以只需要比较动态节点。

下面是示例代码:

<template>
  <div>
    <h1>静态树提升</h1>
    <p>这是一个静态文本段落。</p>
    <MyComponent />
  </div>
</template>

<script>
import MyComponent from './MyComponent.vue'

export default {
  components: {
    MyComponent
  }
}
</script>

更快的响应式系统

Vue3 的响应式系统经过了改进,使其更加高效。在 Vue2 中,每当数据发生变化时,所有依赖它的组件都会更新。在 Vue3 中,只有实际使用该数据的组件才会更新。

更好的 TypeScript 支持

Vue3 对 TypeScript 的支持更加完善。通过 Composition API,可以更好地与 TypeScript 集成,并且 TypeScript 可以对模板进行类型检查。

总结

Vue3 在性能方面带来了很多改进。Composition API 和静态树提升使代码更加高效和可维护。响应式系统经过了改进,使其更加高效。最后,对 TypeScript 的支持也得到了提高。在使用 Vue.js 开发 Web 应用程序时,这些改进将使代码更加高效且易于维护。

huguangju commented 1 year ago

@ShihHsing

Vue3 在性能方面做了很多优化和改进,具体体现在以下方面:

  1. 更小的包体积:Vue3 中许多不常用的 API 都被移除了,使得 Vue3 的包体积比 Vue2 更小。
  2. 更快的渲染:Vue3 采用了 Proxy 替代了 Object.defineProperty 来实现数据响应式,这种方式比 Object.defineProperty 有更好的性能表现。此外,Vue3 的编译器也进行了重写,使得模板编译速度更快。
  3. 更好的 Tree-Shaking 支持:Vue3 的模块系统采用了 ESM(ES Module)规范,这种规范能更好的支持 Tree-Shaking,能够去除应用中没有用到的代码。
  4. 更好的 TypeScript 支持:Vue3 内置支持 TypeScript,并且提供了很好的类型推导支持,能够更好的检查代码错误。
  5. 更好的组件抽象:Vue3 通过组合 API(Composition API)提供了更好的组件抽象方式,将相关逻辑封装在单独的函数中,使得组件更容易理解和维护。

Vue3 在包体积、渲染速度、Tree-Shaking、TypeScript 支持和组件抽象方面都有很大的优化和改进,使得开发者能够获得更好的开发体验和更高的性能。

by chatGPT :-)