关于 expo
面向 Expo React Native 开发者的性能实践指南,包含 54 条分为 9 类的优先级规则,涉及启动、资源包、列表、图像、数据获取、导航、渲染、动画和内存。
主要功能
- 01涵盖 9 类的 54 条规则
- 02按优先级排列性能建议
- 03应用启动与资源包优化
- 04列表与图像性能实践
- 05数据、导航、渲染与内存指导
适用场景
- 01缩短应用启动时间
- 02减少资源包体积与内存使用
- 03优化列表、图像和动画
- 04检查移动应用代码的性能问题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill expo安装后在 Claude Code 中输入/expo确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdanim-avoid-layout-animation.mdanim-gesture-handler-integration.mdanim-interaction-manager.mdanim-use-native-driver.mdanim-use-reanimated.mdbundle-analyze-size.mdbundle-avoid-barrel-files.mdbundle-enable-proguard.mdbundle-optimize-fonts.mdbundle-remove-unused-dependencies.mdbundle-split-by-architecture.mdbundle-use-lightweight-alternatives.mddata-abort-requests.mddata-cache-strategies.mddata-optimistic-updates.mddata-pagination.mddata-parallel-fetching.mddata-request-deduplication.mdimage-lazy-load-offscreen.mdimage-preload-critical.mdimage-resize-to-display-size.mdimage-use-expo-image.mdimage-use-placeholders.mdimage-use-webp-format.mdlaunch-defer-non-critical.md详细介绍
社区版 Expo React Native 最佳实践
Expo React Native 应用的全面性能优化指南。包含 9 个类别中的 54 条规则,并按影响程度排序,为自动重构和代码生成提供指导。
适用场景
在以下情况下参考这些指南:
- 编写新的 Expo React Native 组件
- 优化应用启动和交互时间
- 实现列表、图像或动画
- 减少包体积和内存占用
- 检查代码中的移动端性能问题
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 启动时间优化 | CRITICAL | launch- |
| 2 | 包体积优化 | CRITICAL | bundle- |
| 3 | 列表虚拟化 | HIGH | list- |
| 4 | 图像优化 | HIGH | image- |
| 5 | 数据获取模式 | HIGH | data- |
| 6 | 导航性能 | MEDIUM-HIGH | nav- |
| 7 | 防止重新渲染 | MEDIUM | rerender- |
| 8 | 动画性能 | MEDIUM | anim- |
| 9 | 内存管理 | LOW-MEDIUM | mem- |
快速参考
1. 启动时间优化(CRITICAL)
launch-splash-screen-control- 在资源加载期间控制启动屏幕的显示launch-preload-critical-assets- 在启动屏幕显示期间预加载字体和图像launch-hermes-engine- 使用 Hermes 引擎加快启动速度launch-defer-non-critical- 延迟非关键初始化launch-new-architecture- 启用新架构,实现同步原生通信launch-minimize-root-imports- 减少根 App 组件中的导入
2. 包体积优化(CRITICAL)
bundle-avoid-barrel-files- 避免从汇总文件导入bundle-analyze-size- 发布前分析包体积bundle-remove-unused-dependencies- 移除未使用的依赖项bundle-split-by-architecture- 生成特定架构的 APKbundle-enable-proguard- 为 Android 发布构建启用 ProGuardbundle-optimize-fonts- 为自定义字体生成仅包含所用字符的子集bundle-use-lightweight-alternatives- 使用轻量级库替代方案
3. 列表虚拟化(HIGH)
list-use-flashlist- 使用 FlashList 替代 FlatListlist-provide-estimated-size- 提供准确的 estimatedItemSizelist-avoid-inline-functions- 避免在 renderItem 中使用内联函数list-provide-getitemlayout- 为固定高度的条目提供 getItemLayoutlist-avoid-key-prop- 避免在 FlashList 条目内部使用 key 属性list-batch-rendering- 配置列表批量渲染list-memoize-item-components- 对列表条目组件使用记忆化
4. 图像优化(HIGH)
image-use-expo-image- 使用 expo-image 替代 React Native Imageimage-resize-to-display-size- 将图像调整为显示尺寸image-use-webp-format- 使用 WebP 格式以减小文件体积image-use-placeholders- 使用 BlurHash 或 ThumbHash 占位图image-preload-critical- 预加载首屏关键图像image-lazy-load-offscreen- 延迟加载屏幕外的图像
5. 数据获取模式(HIGH)
data-parallel-fetching- 并行获取相互独立的数据data-request-deduplication- 对并发请求进行去重data-abort-requests- 在组件卸载时中止请求data-pagination- 实现高效的分页策略data-cache-strategies- 使用恰当的缓存策略data-optimistic-updates- 应用乐观更新以提升响应速度
6. 导航性能(MEDIUM-HIGH)
nav-use-native-stack- 使用原生堆栈导航器nav-unmount-inactive-screens- 卸载非活动的标签页屏幕nav-prefetch-screen-data- 在导航前预取数据nav-optimize-screen-options- 优化屏幕选项nav-avoid-deep-nesting- 避免导航器深度嵌套
7. 防止重新渲染(中)
rerender-use-memo-components- 使用 React.memo 缓存开销较大的组件rerender-use-callback- 使用 useCallback 保持回调稳定rerender-use-memo-values- 使用 useMemo 缓存开销较大的计算rerender-avoid-context-overuse- 避免在频繁更新时过度使用 Contextrerender-split-component-state- 拆分组件,以隔离更新状态rerender-use-react-compiler- 启用 React Compiler 以自动缓存rerender-avoid-anonymous-components- 避免在 JSX 中使用匿名组件
8. 动画性能(中)
anim-use-reanimated- 使用 Reanimated 在 UI 线程上执行动画anim-use-native-driver- 为 Animated API 启用 useNativeDriveranim-avoid-layout-animation- 优先使用变换,而非布局动画anim-gesture-handler-integration- 将 Gesture Handler 与 Reanimated 搭配使用anim-interaction-manager- 在动画期间延后执行繁重任务
9. 内存管理(低至中)
mem-cleanup-useeffect- 清理订阅和计时器mem-abort-fetch-requests- 在卸载时中止 fetch 请求mem-avoid-closure-leaks- 避免基于闭包的内存泄漏mem-release-heavy-resources- 不再需要时释放占用大量资源的对象mem-profile-with-tools- 使用开发工具分析内存用量
使用方法
阅读各个参考文件,了解详细说明和代码示例:
- 章节定义 - 类别结构和影响级别
- 规则模板 - 添加新规则的模板
- 规则示例:launch-splash-screen-control、list-use-flashlist
完整编译文档
查看包含所有展开规则的完整指南:AGENTS.md
评论
支持 Markdown