com um clique
miniprogram-development
小程序开发时使用。覆盖微信/支付宝/抖音小程序 + Taro/uni-app 多端统一开发。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
小程序开发时使用。覆盖微信/支付宝/抖音小程序 + Taro/uni-app 多端统一开发。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
设计 API 认证鉴权和权限矩阵时使用。适用于多角色系统、租户隔离、字段级权限。优先使用 OAuth 2.0 / JWT + RBAC + 资源归属检查。
设计具体 API 端点时使用。适用于资源建模后的下一步、列端点清单、HTTP 方法和状态码选择。优先使用 RFC 7231 HTTP 语义 + GitHub REST 命名规范。
设计 API 错误码和错误结构时使用。适用于错误响应规范、调用方错误处理、调试可观测。优先使用 RFC 7807 Problem Details + 业务错误码 + 调用方处理建议。
设计幂等接口和重试策略时使用。适用于支付、扣减、订单、关键写操作。优先使用 Idempotency-Key + 业务去重键 + 并发冲突处理(ETag/版本号)。
输出 OpenAPI 契约和 Mock 服务时使用。适用于 API 设计的最后一步、给前端/后端/QA 的交付。优先使用 OpenAPI 3.1 + Mock 数据覆盖所有路径 + 详细的下游交接清单。
设计列表接口的分页、筛选、排序、搜索时使用。适用于所有列表 API。优先使用 cursor 分页(大数据)或 offset 分页(小数据)+ 统一筛选/排序规范。
| name | miniprogram-development |
| description | 小程序开发时使用。覆盖微信/支付宝/抖音小程序 + Taro/uni-app 多端统一开发。 |
| 场景 | 用什么 |
|---|---|
| 小程序页面/组件/多端 | 本 skill |
| Web 页面(纯浏览器) | component-architecture/ |
| APP 原生(React Native/Flutter) | mobile-hybrid/ |
| 状态管理通用方法 | state-management/ |
| API 调用/缓存 | data-fetching/ |
┌─ 小程序框架决策树 ─────────────────────────────────────────┐
│ │
│ Q1: 只做微信小程序? │
│ 是 → 微信原生(最佳性能 + 最新 API) │
│ 否 → Q2 │
│ │
│ Q2: 团队技术栈? │
│ React → Taro 3(京东出品,React/Vue 均支持) │
│ Vue → uni-app(DCloud,Vue 生态 + 最多端) │
│ 都行 → Taro(社区更活跃) 或 uni-app(端更多) │
│ │
│ Q3: 需要同时出 APP? │
│ 是 → uni-app(支持编译到 APP) │
│ 否 → Taro(小程序 + H5 足够) │
└─────────────────────────────────────────────────────────────┘
| 框架 | 语法 | 多端覆盖 | 性能 | 生态 | 适合 |
|---|---|---|---|---|---|
| 微信原生 | WXML+WXSS+JS | 仅微信 | 最佳 | 微信组件 | 只做微信且性能敏感 |
| Taro 3 | React/Vue | 微信/支付宝/抖音/H5/RN | 良好 | 京东+社区 | React 团队多端 |
| uni-app | Vue 2/3 | 微信/支付宝/抖音/百度/H5/APP | 良好 | DCloud | Vue 团队 + 需要 APP |
| Remax | React | 多端 | 良好 | 蚂蚁 | React 纯粹 |
src/
├── app.config.ts # 全局配置(pages/tabBar/window)
├── app.ts # 入口
├── pages/
│ ├── index/
│ │ ├── index.tsx # 页面组件
│ │ ├── index.config.ts # 页面配置
│ │ └── index.module.scss
│ └── user/
│ └── ...
├── components/ # 通用组件
├── services/ # API 调用
├── stores/ # 状态管理
├── utils/ # 工具函数
└── assets/ # 静态资源
// Taro React 页面
import { useDidShow, useDidHide, useShareAppMessage } from '@tarojs/taro';
function IndexPage() {
// 页面显示(每次切回来都触发)
useDidShow(() => { console.log('页面显示'); });
// 页面隐藏
useDidHide(() => { console.log('页面隐藏'); });
// 分享
useShareAppMessage(() => ({
title: '分享标题',
path: '/pages/index/index',
imageUrl: 'share.png',
}));
return <View>...</View>;
}
// services/request.ts
import Taro from '@tarojs/taro';
const BASE_URL = process.env.TARO_APP_API_URL;
export async function request<T>(options: {
url: string;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
data?: any;
needAuth?: boolean;
}): Promise<T> {
const { url, method = 'GET', data, needAuth = true } = options;
const header: Record<string, string> = {
'Content-Type': 'application/json',
};
if (needAuth) {
const token = Taro.getStorageSync('token');
if (token) header['Authorization'] = `Bearer ${token}`;
}
const res = await Taro.request({
url: `${BASE_URL}${url}`,
method,
data,
header,
timeout: 10000,
});
if (res.statusCode === 401) {
// Token 过期 → 跳登录
Taro.navigateTo({ url: '/pages/login/index' });
throw new Error('未授权');
}
if (res.statusCode >= 400) {
throw new Error(res.data?.message || '请求失败');
}
return res.data as T;
}
// 微信小程序登录标准流程
import Taro from '@tarojs/taro';
export async function wxLogin(): Promise<string> {
// 1. 获取临时 code
const { code } = await Taro.login();
// 2. 发送 code 到后端换 token
const { token } = await request<{ token: string }>({
url: '/auth/wx-login',
method: 'POST',
data: { code },
needAuth: false,
});
// 3. 存储 token
Taro.setStorageSync('token', token);
return token;
}
// 获取用户信息(需要用户授权按钮触发)
export async function getUserProfile() {
const { userInfo } = await Taro.getUserProfile({
desc: '用于完善个人资料',
});
return userInfo;
}
首屏优化:
□ 分包加载(subPackages,主包 < 2MB)
□ 预加载分包(preloadRule)
□ 骨架屏(首屏数据未到时展示)
□ 数据预拉取(prefetchData)
□ 图片懒加载(lazy-load)
渲染优化:
□ 长列表虚拟化(RecycleView / VirtualList)
□ setData 数据量最小化(diff 更新)
□ 避免频繁 setData(合并更新)
□ WXS / wxs 处理响应式交互(不过桥)
包大小优化:
□ 主包 ≤ 2MB(超了必须分包)
□ 总包 ≤ 20MB
□ 图片用 CDN(不放本地)
□ 按需引入组件库
□ Tree-shaking 无用代码
| 组件库 | 适配框架 | Stars | 适合 |
|---|---|---|---|
| Vant Weapp | 原生/uni-app | 18K+ | 移动端风格(有赞) |
| NutUI | Taro | 6K+ | 京东风格 |
| TDesign 小程序 | 原生 | 4K+ | 腾讯风格 |
| Arco Design Mobile | Taro | - | 字节风格 |
| uni-ui | uni-app | - | DCloud 官方 |
| WeUI | 原生 | 27K+ | 微信官方基础 |
1. 主包超 2MB → 必须分包,图片上 CDN
2. setData 数据太大 → 页面卡顿(单次 < 256KB)
3. 不处理授权拒绝 → 用户拒绝后功能卡死
4. wx.navigateTo 层级超 10 → 用 redirectTo 或 reLaunch
5. 不做登录态检查 → Token 过期后白屏
6. 不适配 iOS 安全区 → 底部被遮挡
7. 不测试真机 → 模拟器正常真机崩溃
8. 不处理网络异常 → 断网无提示
9. 小程序审核被拒 → 提前看审核规范
10. 不做版本兼容 → 低版本基础库报错
templates/miniprogram-template.md上游:
ui-ux-designer → 小程序设计稿(注意平台规范差异)
api-designer → API 契约
下游:
testing-frontend → 小程序自动化测试(Miniprogram Automator)
build-deploy → 小程序 CI(miniprogram-ci)