perf-analyzer
前端性能分析助手
分析性能问题并给出具体优化方案。
分析维度
1. 渲染性能
自动检查项:
| 检查项 | 检测方式 | 优化方案 |
|---|---|---|
| 不必要的重渲染 | 搜索未 memo 化的组件、不稳定的 props 引用 | React.memo / useMemo / useCallback |
| 大列表无虚拟化 | 搜索 .map() 渲染超过 50 个元素 |
react-virtualized / vue-virtual-scroller |
| 昂贵的计算 | 搜索 render/setup 中的复杂计算 | useMemo / computed |
| 状态更新过于频繁 | 搜索 setState/ref 在 scroll/resize 等高频事件中的调用 | 防抖/节流 |
| Context 滥用 | React: 检查 Context value 是否每次都是新引用 | 拆分 Context 或 useMemo value |
2. Bundle 分析
自动检查项:
| 检查项 | 检测方式 | 优化方案 |
|---|---|---|
| 大型依赖全量导入 | import lodash vs import { debounce } from 'lodash-es' |
按需导入 / 替换为轻量替代 |
| 未使用的依赖 | package.json 中有但代码中未引用 | 移除 |
| 未代码分割 | 路由组件是否使用 lazy/defineAsyncComponent | 动态导入 |
| 重复依赖 | 检查 lock 文件中的版本重复 | 统一版本 |
| 图片资源未优化 | 搜索 .png/.jpg 直接引用 | WebP 格式 + 压缩 |
3. 网络请求
自动检查项:
| 检查项 | 检测方式 | 优化方案 |
|---|---|---|
| 请求瀑布流 | 串行的 await API 调用 | Promise.all 并行 |
| 缺少缓存 | 相同 API 多次调用 | SWR / React Query / 手动缓存 |
| 缺少请求取消 | 组件卸载未取消进行中的请求 | AbortController |
| 未处理竞态 | 快速切换导致旧请求覆盖新数据 | 竞态保护 |
4. 内存泄漏
自动检查项:
| 检查项 | 检测方式 | 优化方案 |
|---|---|---|
| 事件监听未移除 | addEventListener 无对应 removeEventListener | cleanup 函数 |
| 定时器未清理 | setInterval/setTimeout 无对应 clear | cleanup 函数 |
| 闭包持有大对象 | 事件回调/定时器中引用 state 或大数据 | WeakRef 或解绑 |
工作流程
- 读取项目配置:package.json、构建配置
- 按维度扫描:根据用户描述的问题选择扫描维度
- 输出报告:
## 性能分析报告
### 概要
- 发现 N 个性能问题
- 预计优化后 [加载时间/渲染次数/bundle大小] 改善 XX%
### 🔴 高优先级
#### [问题描述]
- **位置**: `file.tsx` L42
- **影响**: [具体影响]
- **优化方案**: [具体方案 + 代码示例]
### 🟡 中优先级
...
### 🟢 低优先级
...
常用优化速查
详细的优化模式和代码示例,在分析时根据具体问题按需提供。
React 优化关键词
React.memo、useMemo、useCallback— 减少重渲染React.lazy+Suspense— 代码分割useTransition/useDeferredValue— 优先级调度
Vue 3 优化关键词
v-once/v-memo— 减少重渲染defineAsyncComponent— 代码分割shallowRef/shallowReactive— 减少深层响应式追踪<KeepAlive>— 缓存组件实例
More from sakumyz/skills
excel-to-markdown
将 Excel 文件转换为 Markdown 表格,支持合并单元格处理、多工作表输出、基础字体语义(粗体/斜体)与超链接转换。适用于将式样书、数据表转为可读的 Markdown 文档。
64excel-sheet-splitter
将Excel工作簿按工作表拆分为独立的Excel文件,每个工作表生成一个单独的文件。适用场景:(1) 将多工作表Excel文件拆分为单独文件,(2) 提取特定工作表为独立文件,(3) 分发合并工作簿中的工作表,(4) 为单独处理或分发创建工作表副本。
11redmine-ticket-to-task
Redmine 工单到开发计划的一站式流程。从 Redmine 票据自动提取需求、分析任务范围、拆解开发步骤、定位相关式样书和代码文件。适用于:(1) 收到新的 Redmine 课题/Bug/Todo 时,(2) 需要快速理解票据并制定开发计划时。需配合 redmine-search skill 使用。
9smart-debugger
前端智能调试助手。从错误信息、控制台日志、异常行为描述快速定位问题代码并给出修复建议。适用于:(1) 运行时错误(TypeError、ReferenceError 等),(2) 控制台警告分析,(3) 页面白屏/卡顿排查,(4) 网络请求异常,(5) 组件渲染异常。与 BugHunter 区别:smart-debugger 聚焦快速定位,BugHunter 做完整闭环修复。
8redmine-search
Redmine 访问 Skill,仅查询指派给我的工单,提供通过 API Token 认证方式访问 Redmine 系统的功能。
8chat-to-obsidian-note
将 AI 聊天内容提炼为结构化技术文档并保存到 Obsidian 知识库。支持三种文档类型:问题解决型、知识学习型、方案对比型。自动推断知识库分类目录,生成符合 Obsidian 规范的 Markdown 文件(含 frontmatter、双链)。适用于:(1) 聊天中解决了技术问题后想记录下来,(2) 学到新知识想沉淀到知识库,(3) 对比了多个方案后想保存决策过程。触发条件:用户说"保存到知识库"、"导出到 Obsidian"、"记录到笔记"、"保存这次对话"、"转成文档"等。
8