
Vue 3 相较于 Vue 2 在底层进行了诸多优化(例如使用了 Proxy 进行响应式系统重构、编译时优化等),但开发者仍需遵循最佳实践才能发挥其最大性能。
以下是 Vue 3 性能优化的核心技巧和最佳实践:
v-if 代替 v-show (按需渲染)v-if。
v-if 具有更高的切换开销(销毁和重建),但它确保了只有在条件为真时才会创建组件实例和 DOM 元素。v-show 只是切换 CSS 的 display 属性,无论条件如何,元素都会被渲染,切换开销低,但初始渲染开销大。Vue 3 编译器会自动进行静态提升(Static Hoisting)和块树(Block Tree)优化。
hoistStatic):
<template> 避免不必要的层级:
<template> 标签包裹多个根元素,而不是多余的 <div>。<template> 不会渲染成真实的 DOM 节点,可以减少 DOM 树深度。keyv-for 进行列表渲染的元素上,务必提供稳定且唯一的 :key 属性(通常是数据的唯一 ID)。index 作为 key,除非列表项永远不会变动、新增或删除,否则会导致性能问题和状态错误。watch 的 deep: true 选项。如果只需要侦听对象内部某个具体的属性,直接写出该属性的路径,例如:() => user.name,而不是侦听整个 user 对象。{{ formatPrice(item.price) }}),因为每次组件重新渲染时,该函数都会被调用。
computed 属性。计算属性有缓存,只有在其依赖项发生变化时才会重新计算。shallowRef 和 shallowReactiveshallowReactive()。shallowRef()。defineAsyncComponent 进行组件级别的懒加载。JavaScript
// 路由懒加载 (常用)
const Home = () => import('./views/Home.vue');
// 组件懒加载
import { defineAsyncComponent } from 'vue';
const MyModal = defineAsyncComponent(() =>
import('./components/MyModal.vue')
);import() 语法来定义路由组件。vue-virtual-scroller) 或自定义实现。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。