前言
性能优化的第一步是找到瓶颈!AI可以帮我们快速分析和定位性能问题!
1. AI性能分析提示词
javascript
/* 提示词模板:
"分析这段代码的性能问题并提出优化建议:
[代码]"
*/
// 示例:有性能问题的代码
import { useState, useEffect } from 'react';
function SlowComponent() {
const [count, setCount] = useState(0);
const [data, setData] = useState([]);
// ❌ 问题:每次渲染都会创建新函数
const processData = (items) => {
return items.map(item => ({
...item,
processed: true
}));
};
// ❌ 问题:依赖数组包含了会变化的函数
useEffect(() => {
const fetchData = async () => {
const res = await fetch('/api/data');
const json = await res.json();
setData(processData(json));
};
fetchData();
}, [processData]);
return (
<div>
<button onClick={() => setCount(c => c + 1)}>
Count: {count}
</button>
{data.map(item => (
<div key={item.id}>{item.name}</div>
))}
</div>
);
}
/* AI分析结果:
🔍 性能问题分析
1. ❌ processData每次渲染都会重新创建
2. ❌ useEffect依赖processData导致频繁触发
3. ❌ 没有使用useCallback/useMemo
4. ❌ 没有loading/error状态
优化方案:
*/
// AI优化后的代码
import { useState, useEffect, useCallback, useMemo } from 'react';
interface DataItem {
id: string;
name: string;
}
interface ProcessedItem extends DataItem {
processed: boolean;
}
function OptimizedComponent() {
const [count, setCount] = useState(0);
const [data, setData] = useState<ProcessedItem[]>([]);
const [loading, setLoading] = useState(true);
// ✅ 使用useCallback稳定函数引用
const processData = useCallback((items: DataItem[]): ProcessedItem[] => {
return items.map(item => ({
...item,
processed: true
}));
}, []);
useEffect(() => {
const fetchData = async () => {
try {
const res = await fetch('/api/data');
const json = await res.json();
setData(processData(json));
} catch (err) {
console.error('Failed to fetch:', err);
} finally {
setLoading(false);
}
};
fetchData();
}, [processData]); // ✅ 依赖稳定
if (loading) {
return <div>加载中...</div>;
}
return (
<div>
<button onClick={() => setCount(c => c + 1)}>
Count: {count}
</button>
{data.map(item => (
<div key={item.id}>{item.name}</div>
))}
</div>
);
}
2. 常见性能问题与AI优化
| 问题 | AI优化方案 |
|---|---|
| 不必要的重渲染 | 使用React.memo/useMemo/useCallback |
| 大列表性能差 | 虚拟滚动、分页加载 |
| 图片加载慢 | 懒加载、格式优化、CDN |
| 打包体积大 | 代码分割、Tree Shaking |
3. 今日小结
这一篇我们学习了:
- AI性能分析提示词
- 常见性能问题优化
4. 下篇预告
下一篇,我们学习 AI辅助的安全扫描与漏洞修复!