React Best Practices 2 0.1.0

Polar Sponsor
爱发电 赞助
.NET 9.0

React 与 Next.js 性能优化指南,源自 Vercel 工程团队。适用于编写、审查或重构 React/Next.js 代码时使用。

Vercel React Best Practy.

功能概述

Vercel React Best Practy.是一项面向实际任务的技能,主要用于React and Next.js 应用程序综合性能优化指南,由Vercel维护. 包含跨8类的62条规则,按影响排序。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。

核心要点

  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
  • 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
  • 从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

使用与执行

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

Vercel React 最佳实践

由 Vercel 维护的 React 与 Next.js 应用综合性能优化指南。涵盖 8 个类别共 62 条规则,并按影响程度排序,以指导自动化重构与代码生成。

适用场景

在以下情况下参考本指南:

  • 编写新的 React 组件或 Next.js 页面
  • 实现数据获取(客户端或服务端)
  • 审查代码是否存在性能问题
  • 重构现有 React/Next.js 代码
  • 优化包体积或加载时间

按优先级划分的规则类别

优先级 类别 影响程度 前缀
1 消除瀑布式请求(Eliminating Waterfalls) CRITICAL async-
2 包体积优化(Bundle Size Optimization) CRITICAL bundle-
3 服务端性能(Server-Side Performance) HIGH server-
4 客户端数据获取(Client-Side Data Fetching) MEDIUM-HIGH client-
5 重渲染优化(Re-render Optimization) MEDIUM rerender-
6 渲染性能(Rendering Performance) MEDIUM rendering-
7 JavaScript 性能(JavaScript Performance) LOW-MEDIUM js-
8 高级模式(Advanced Patterns) LOW advanced-

快速查阅

1. 消除瀑布式请求(CRITICAL)

  • async-defer-await — 将 await 移至实际使用它的分支中
  • async-parallel — 对独立操作使用 Promise.all()
  • async-dependencies — 使用 better-all 处理部分依赖关系
  • async-api-routes — 在 API 路由中尽早启动 Promise,延迟 await
  • async-suspense-boundaries — 使用 Suspense 流式传输内容

2. 包体积优化(CRITICAL)

  • bundle-barrel-imports — 直接导入,避免使用 barrel 文件
  • bundle-dynamic-imports — 对重型组件使用 next/dynamic
  • bundle-defer-third-party — 在 hydration 完成后加载分析/日志工具
  • bundle-conditional — 仅在功能启用时加载对应模块
  • bundle-preload — 在悬停/聚焦时预加载,提升感知速度

3. 服务端性能(HIGH)

  • server-auth-actions — 像处理 API 路由一样对服务端操作进行身份验证
  • server-cache-react — 使用 React.cache() 实现按请求去重
  • server-cache-lru — 使用 LRU 缓存实现跨请求缓存
  • server-dedup-props — 避免在 RSC props 中重复序列化数据
  • server-hoist-static-io — 将静态 I/O(如字体、Logo)提升至模块层级
  • server-serialization — 最小化传递给客户端组件的数据量
  • server-parallel-fetching — 重构组件结构以并行执行 fetch 请求
  • server-after-nonblocking — 使用 after() 执行非阻塞操作

4. 客户端数据获取(MEDIUM-HIGH)

  • client-swr-dedup — 使用 SWR 实现自动请求去重
  • client-event-listeners — 去重全局事件监听器
  • client-passive-event-listeners — 对滚动事件使用 passive 监听器
  • client-localstorage-schema — 对 localStorage 数据进行版本控制并最小化其体积

5. 重渲染优化(MEDIUM)

  • rerender-defer-reads — 不要订阅仅在回调中使用的状态
  • rerender-memo — 将耗时逻辑提取为 memoized 组件
  • rerender-memo-with-default-value — 将默认的非原始类型 props 提升至外层作用域
  • rerender-dependencies — 在 effect 中使用原始类型作为依赖项
  • rerender-derived-state — 订阅派生布尔值,而非原始值
  • rerender-derived-state-no-effect — 在渲染过程中派生状态,而非在 effect 中
  • rerender-functional-setstate — 使用函数式 setState 保证回调稳定性
  • rerender-lazy-state-init — 向 useState 传入函数以延迟计算昂贵初始值
  • rerender-simple-expression-in-memo — 避免对简单原始值使用 memo
  • rerender-move-effect-to-event — 将交互逻辑移至事件处理器中
  • rerender-transitions — 对非紧急更新使用 startTransition
  • rerender-use-ref-transient-values — 对频繁变化的临时值使用 ref
  • rerender-no-inline-components — 不要在组件内部定义组件

6. 渲染性能(MEDIUM)

  • rendering-animate-svg-wrapper — 动画作用于 div 包裹器,而非 SVG 元素本身
  • rendering-content-visibility — 对长列表使用 content-visibility
  • rendering-hoist-jsx — 将静态 JSX 提取到组件外部
  • rendering-svg-precision — 降低 SVG 坐标精度
  • rendering-hydration-no-flicker — 使用内联脚本提供仅客户端数据,防止闪烁
  • rendering-hydration-suppress-warning — 抑制预期的 hydration 差异警告
  • rendering-activity — 使用 Activity 组件控制显示/隐藏
  • rendering-conditional-render — 使用三元表达式而非 && 进行条件渲染
  • rendering-usetransition-loading — 优先使用 useTransition 管理加载状态
  • rendering-resource-hints — 使用 React DOM 的资源提示(resource hints)进行预加载
  • rendering-script-defer-async — 在

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 12万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习