141 lines
3.4 KiB
Markdown
141 lines
3.4 KiB
Markdown
---
|
||
name: miniprogram-expert
|
||
description: >
|
||
小程序开发专家。当用户需要微信小程序、支付宝小程序、抖音小程序开发,
|
||
Taro、uni-app 跨端框架,云开发、云函数、分包优化、setData 优化、
|
||
登录授权、支付功能、审核上架,或说 "小程序"、"Taro" 时使用此技能。
|
||
allowed-tools: Read, Glob, Grep, Edit, Write, Bash
|
||
maturity: stable
|
||
last-reviewed: 2026-02-18
|
||
---
|
||
|
||
# 小程序开发专家 (Mini Program Expert)
|
||
|
||
> **Output Style**: 本技能使用内联输出规范
|
||
|
||
专注于微信/支付宝/抖音等平台小程序开发,以及 Taro、uni-app 跨端开发。
|
||
|
||
## 触发关键词
|
||
|
||
- **平台**: `微信小程序`, `支付宝小程序`, `抖音小程序`, `百度小程序`
|
||
- **框架**: `Taro`, `uni-app`, `Remax`
|
||
- **功能**: `云开发`, `小程序登录`, `小程序支付`, `分享`
|
||
- **优化**: `分包`, `性能优化`, `启动优化`
|
||
|
||
## 核心能力
|
||
|
||
- **原生开发**: 微信、支付宝、抖音、百度小程序
|
||
- **跨端框架**: Taro 3.x、uni-app
|
||
- **云开发**: 云函数、云数据库、云存储
|
||
- **性能优化**: 启动、渲染、包体积优化
|
||
- **核心功能**: 登录授权、支付、分享
|
||
|
||
## 项目结构
|
||
|
||
### 微信小程序
|
||
```
|
||
miniprogram/
|
||
├── app.js / app.json / app.wxss
|
||
├── pages/
|
||
│ └── index/
|
||
│ ├── index.js / index.json
|
||
│ ├── index.wxml / index.wxss
|
||
├── components/
|
||
├── utils/
|
||
│ ├── request.js
|
||
│ └── auth.js
|
||
├── services/
|
||
└── packageA/ # 分包
|
||
```
|
||
|
||
### Taro 项目
|
||
```
|
||
src/
|
||
├── app.tsx / app.config.ts
|
||
├── pages/
|
||
│ └── index/
|
||
│ ├── index.tsx
|
||
│ └── index.config.ts
|
||
├── components/
|
||
├── hooks/
|
||
├── store/
|
||
└── services/
|
||
```
|
||
|
||
## 页面模板
|
||
|
||
```javascript
|
||
Page({
|
||
data: { list: [], loading: false },
|
||
|
||
onLoad(options) { this.init(options) },
|
||
onShow() { },
|
||
onPullDownRefresh() {
|
||
this.loadData().then(() => wx.stopPullDownRefresh())
|
||
},
|
||
onReachBottom() { this.loadMore() },
|
||
onShareAppMessage() {
|
||
return { title: '分享', path: '/pages/index/index' }
|
||
},
|
||
|
||
async init(options) {
|
||
this.setData({ loading: true })
|
||
try {
|
||
const data = await this.fetchData()
|
||
this.setData({ list: data })
|
||
} finally {
|
||
this.setData({ loading: false })
|
||
}
|
||
}
|
||
})
|
||
```
|
||
|
||
## setData 优化
|
||
|
||
```javascript
|
||
// ❌ 全量更新
|
||
this.setData({ list: this.data.list })
|
||
|
||
// ✅ 路径更新
|
||
this.setData({
|
||
'list[0].name': '新名称',
|
||
[`list[${i}].done`]: true
|
||
})
|
||
|
||
// ✅ 合并更新
|
||
const updates = {}
|
||
items.forEach((item, i) => { updates[`list[${i}].checked`] = true })
|
||
this.setData(updates)
|
||
```
|
||
|
||
## 性能优化清单
|
||
|
||
**启动优化**
|
||
- 主包 < 2MB,分包加载
|
||
- `"lazyCodeLoading": "requiredComponents"`
|
||
- 骨架屏
|
||
|
||
**渲染优化**
|
||
- 减少 setData 频率和数据量
|
||
- 长列表用虚拟列表
|
||
- 图片懒加载
|
||
|
||
## 参考文档
|
||
|
||
详细API和代码请查阅:
|
||
- `references/wx-api.md` - 微信小程序API速查
|
||
- `references/taro-guide.md` - Taro跨端开发指南
|
||
- `references/cloud-dev.md` - 云开发完整指南
|
||
- `references/optimization.md` - 性能优化详解
|
||
- `scripts/request.js` - 请求封装模板
|
||
- `scripts/auth.js` - 登录授权模板
|
||
|
||
## 输出规范
|
||
|
||
- 中文回复,注释中文
|
||
- 代码完整可运行
|
||
- 说明平台兼容性差异
|
||
- 提供性能优化建议
|
||
- 避免废弃API
|
||
- 不在setData传大量数据
|