From 2e96576084c105b79847251a811d572a1333600b Mon Sep 17 00:00:00 2001 From: fault <3403508166@qq.com> Date: Sat, 22 Mar 2025 09:22:28 +0800 Subject: [PATCH] doc: updat docs/vue.md (#943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 新增性能优化板块 * Move Performance Optimization introduction to ### 介绍 section * 我在 `# 性能优化` 章节中又新增了三个优化方法:虚拟列表(Virtual Scrolling)、按需加载资源(Lazy Loading Resources)和优化事件监听(Event Delegation),每个方法都附带了代码示例和说明。这些方法可以进一步丰富优化策略,覆盖更多场景。 --- docs/vue.md | 348 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 347 insertions(+), 1 deletion(-) diff --git a/docs/vue.md b/docs/vue.md index ebbc2e17..683b4754 100644 --- a/docs/vue.md +++ b/docs/vue.md @@ -1529,10 +1529,356 @@ declare module 'vue' { from: Route, next: () => void ): void - } + } ``` +## 性能优化 + +### 介绍 + +性能优化是构建高效 Vue 应用的关键。以下是一些特殊的优化策略,结合 Vue 的特性,可以大幅减少渲染开销、提升加载速度和用户体验。这些方法不仅限于单一 API,而是从整体架构和开发实践出发,提供通用的性能提升思路。 + +### 条件渲染与缓存结合 + +通过结合 `v-if` 和 ``,可以避免频繁销毁和重建组件,尤其是在切换视图或路由时。搭配 `defineAsyncComponent` 实现懒加载,进一步减少初次加载的开销。 + +```vue + + + +// 缓存动态组件,防止重复创建和销毁。 +//defineAsyncComponent 实现组件懒加载,仅在需要时加载模块。 +//效果:减少 DOM 操作和组件初始化的性能消耗,特别适合复杂组件切换或路由场景。 +``` + +### 路由前置优化(beforeRouteEnter) + +在路由进入前执行数据预取或条件检查,可以避免不必要的渲染和请求,提升页面加载效率。 + +```vue + + + +``` + +### 响应式对象的精简 + +避免将大型对象直接用 reactive 包裹,而是按需拆分,使用 ref 或 toRef 精细控制响应式范围,减少依赖追踪的开销。 + +```vue + + + +``` + +### 计算属性的延迟执行 + +通过封装计算属性并结合 watchEffect,实现按需计算,避免不必要的开销。 + +```vuw + + + +``` + +### v-memo 缓存子树 + +v-memo 用于缓存模板子树,仅在依赖项变化时更新,常用于优化列表或静态内容。 + +```vue + + + +``` + +### 事件节流与防抖 + +通过在事件处理中引入节流(throttle)或防抖(debounce),减少高频事件的触发频率。 + +```vue + + + +``` + +### 虚拟列表(Virtual Scrolling) + +对于长列表(如包含数千条数据的列表),可以使用虚拟列表技术,只渲染可视区域内的元素,减少 DOM 节点数量。 + +```vue + + + + + + +``` + +### 按需加载资源(Lazy Loading Resources) + +通过动态导入(Dynamic Import)按需加载非关键资源(如图片、第三方库),可以减少初次加载的开销,提升首屏渲染速度。 + +```vue + + + +``` + +### 优化事件监听(Event Delegation) + +通过事件委托(Event Delegation)将事件监听器绑定到父元素,减少直接绑定到每个子元素的事件监听器数量,适合动态列表或大量元素场景。 + +```vue + + + + + +``` + API 参考 ---