miniprogram-performance-optimizer
识别小程序性能瓶颈并提供优化建议。在开发过程中检测性能问题时调用,或用户主动请求性能优化时使用。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
识别小程序性能瓶颈并提供优化建议。在开发过程中检测性能问题时调用,或用户主动请求性能优化时使用。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | miniprogram-performance-optimizer |
| description | 识别小程序性能瓶颈并提供优化建议。在开发过程中检测性能问题时调用,或用户主动请求性能优化时使用。 |
本技能用于识别小程序代码中的性能瓶颈,并提供基于微信官方最佳实践的优化建议。覆盖启动性能和运行时性能两大核心领域。
必须立即调用此技能的情况:
建议调用的情况:
检测点:
优化建议:
代码示例:
// app.json - 分包配置
{
"pages": [
"pages/index/index"
],
"subPackages": [
{
"root": "packageA",
"pages": [
"pages/cat/cat",
"pages/dog/dog"
]
}
]
}
检测点:
优化建议:
检测点:
优化建议:
代码示例:
// 首页优化示例
Page({
data: {
items: [],
showSkeleton: true
},
onLoad() {
// 先显示骨架屏
this.loadData();
},
async loadData() {
try {
const res = await wx.request({
url: 'https://api.example.com/data'
});
this.setData({
items: res.data,
showSkeleton: false
});
} catch (error) {
console.error('加载数据失败', error);
}
}
});
检测点:
优化建议:
代码示例:
// ❌ 不推荐:频繁调用 setData
Page({
data: {
name: '',
age: 0,
city: ''
},
updateUserInfo() {
this.setData({ name: '张三' });
this.setData({ age: 25 });
this.setData({ city: '北京' });
}
});
// ✅ 推荐:合并 setData 调用
Page({
data: {
name: '',
age: 0,
city: ''
},
updateUserInfo() {
this.setData({
name: '张三',
age: 25,
city: '北京'
});
}
});
// ✅ 推荐:使用 dataPath 精确更新
Page({
data: {
user: {
info: {
name: '张三',
age: 25
}
}
},
updateAge() {
this.setData({
'user.info.age': 26
});
}
});
检测点:
优化建议:
代码示例:
<!-- ❌ 不推荐:过多的条件渲染 -->
<view wx:if="{{type === 'A'}}">内容 A</view>
<view wx:elif="{{type === 'B'}}">内容 B</view>
<view wx:elif="{{type === 'C'}}">内容 C</view>
<view wx:else">其他内容</view>
<!-- ✅ 推荐:使用 hidden 或模板 -->
<view hidden="{{type !== 'A'}}">内容 A</view>
<view hidden="{{type !== 'B'}}">内容 B</view>
<view hidden="{{type !== 'C'}}">内容 C</view>
<view hidden="{{type !== 'D'}}">其他内容</view>
<!-- ✅ 推荐:长列表使用虚拟列表 -->
<recycle-view batch="{{batchSetRecycleData}}" height="{{height}}" id="recycleId">
<view slot="before">列表头部</view>
<recycle-item wx:for="{{recycleList}}" wx:key="id">
<view>{{item.name}}</view>
</recycle-item>
<view slot="after">列表尾部</view>
</recycle-view>
检测点:
优化建议:
代码示例:
// 预加载页面
Page({
onLoad() {
// 预加载下一个页面
wx.preloadPage({
url: '/pages/detail/detail?id=123'
});
}
});
// 合理使用页面跳转
// ✅ 推荐:保留当前页面
wx.navigateTo({
url: '/pages/detail/detail'
});
// ⚠️ 谨慎使用:关闭当前页面
wx.redirectTo({
url: '/pages/detail/detail'
});
检测点:
优化建议:
代码示例:
// 图片懒加载
Page({
data: {
images: []
},
onLoad() {
this.loadImages();
},
loadImages() {
// 只加载可视区域内的图片
const visibleImages = this.getVisibleImages();
this.setData({ images: visibleImages });
},
onReachBottom() {
// 滚动到底部时加载更多
this.loadMoreImages();
}
});
// 网络请求优化
Page({
async loadData() {
try {
// 使用 Promise.all 并行请求
const [data1, data2, data3] = await Promise.all([
wx.request({ url: '/api/data1' }),
wx.request({ url: '/api/data2' }),
wx.request({ url: '/api/data3' })
]);
this.setData({
data1: data1.data,
data2: data2.data,
data3: data3.data
});
} catch (error) {
console.error('请求失败', error);
}
}
});
检测点:
优化建议:
代码示例:
Page({
data: {
timer: null,
items: []
},
onLoad() {
// 创建定时器
this.data.timer = setInterval(() => {
this.updateData();
}, 1000);
// 添加事件监听
wx.onMemoryWarning(this.handleMemoryWarning);
},
onUnload() {
// 清理定时器
if (this.data.timer) {
clearInterval(this.data.timer);
this.data.timer = null;
}
// 移除事件监听
wx.offMemoryWarning(this.handleMemoryWarning);
// 清理数据
this.setData({ items: [] });
},
handleMemoryWarning(res) {
console.warn('内存警告', res);
// 清理不必要的数据
this.cleanupData();
},
cleanupData() {
// 清理逻辑
const filteredItems = this.data.items.filter(item => item.keep);
this.setData({ items: filteredItems });
}
});
场景 1:用户反馈小程序启动慢
1. 检查主包大小
2. 分析 app.js 初始化逻辑
3. 检查首页 WXML 复杂度
4. 提供分包加载建议
5. 建议使用骨架屏
场景 2:页面滚动卡顿
1. 检查 WXML 节点数量
2. 分析 setData 调用频率
3. 检查是否有长列表未优化
4. 建议使用虚拟列表
5. 优化图片加载策略
场景 3:内存占用过高
1. 检查是否有内存泄漏
2. 分析数据存储策略
3. 检查定时器和监听器清理
4. 建议使用云存储
5. 优化数据清理逻辑
面试前公司背调。快速梳理目标公司的业务/产品、融资与规模、组织与文化、面试特点、薪资区间与避坑点,帮助用户有的放矢地准备。触发词:公司背调、了解公司、面试前了解XX、这家公司怎么样、XX公司评价、去XX公司面试、公司靠谱吗、XX公司薪资。
面试全流程总控教练(编排层)。按"投递前→面试前→面试后"生命周期,把用户路由到正确的专项 Skill,并保证环节间衔接成闭环。触发词:面试辅导、准备面试、帮我面试、面试全流程、求职辅导、面试陪练、面试怎么准备、从零开始准备面试、求职规划。
生成预测面试题库、答题话术策略、打磨自我介绍。触发词:面试会问什么、准备面试题、面试话术、怎么回答离职原因、自我介绍、STAR、面试重点、面试前准备什么、行为题、压力面。
复盘真实面试表现、生成高质量反向提问清单。触发词:面试复盘、面得怎么样、面试后复盘、面试官可能怎么看、我该问什么、反向提问、面试后问什么、面试后该做什么。
多角色模拟面试官,实战对练并给评分与改进。触发词:模拟面试、面试陪练、帮我练面试、mock interview、模拟技术面、模拟HR面、来一场模拟面试、压力面试。
Offer 薪资拆解、谈判话术、多 Offer 决策、投递进度管理。触发词:谈薪、薪资谈判、offer对比、多个offer怎么选、怎么谈工资、入职前注意、投递进度、面试进度管理、总包、期权。