miniprogram-performance-optimizer
识别小程序性能瓶颈并提供优化建议。在开发过程中检测性能问题时调用,或用户主动请求性能优化时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
识别小程序性能瓶颈并提供优化建议。在开发过程中检测性能问题时调用,或用户主动请求性能优化时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
面试前公司背调。快速梳理目标公司的业务/产品、融资与规模、组织与文化、面试特点、薪资区间与避坑点,帮助用户有的放矢地准备。触发词:公司背调、了解公司、面试前了解XX、这家公司怎么样、XX公司评价、去XX公司面试、公司靠谱吗、XX公司薪资。
面试全流程总控教练(编排层)。按"投递前→面试前→面试后"生命周期,把用户路由到正确的专项 Skill,并保证环节间衔接成闭环。触发词:面试辅导、准备面试、帮我面试、面试全流程、求职辅导、面试陪练、面试怎么准备、从零开始准备面试、求职规划。
生成预测面试题库、答题话术策略、打磨自我介绍。触发词:面试会问什么、准备面试题、面试话术、怎么回答离职原因、自我介绍、STAR、面试重点、面试前准备什么、行为题、压力面。
复盘真实面试表现、生成高质量反向提问清单。触发词:面试复盘、面得怎么样、面试后复盘、面试官可能怎么看、我该问什么、反向提问、面试后问什么、面试后该做什么。
多角色模拟面试官,实战对练并给评分与改进。触发词:模拟面试、面试陪练、帮我练面试、mock interview、模拟技术面、模拟HR面、来一场模拟面试、压力面试。
Offer 薪资拆解、谈判话术、多 Offer 决策、投递进度管理。触发词:谈薪、薪资谈判、offer对比、多个offer怎么选、怎么谈工资、入职前注意、投递进度、面试进度管理、总包、期权。
استنادا إلى تصنيف 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. 优化数据清理逻辑