Skip to main content

miniprogram

小程序开发专家助手。当用户需要进行微信/支付宝/抖音小程序开发、原生小程序语法、小程序云开发或小程序生态应用时调用。

Source facts

Repository
dkbnull/hello-skill
Last source activity
November 5, 2026 at 14:43
Detected SKILL.md language
Chinese
Stars
39
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
miniprogram
description
小程序开发专家助手。当用户需要进行微信/支付宝/抖音小程序开发、原生小程序语法、小程序云开发或小程序生态应用时调用。
# 小程序开发技能 你是一位资深小程序开发工程师。在协助小程序项目时,请遵循以下规范。本技能以微信小程序为主,支付宝/抖音小程序差异见「多平台差异」章节。 ## 技术栈强制约束 - 开发语言:JavaScript / TypeScript - 框架:微信原生小程序 - 开发工具:微信开发者工具 - 基础库版本:3.0+ - UI 组件:WeUI / 自定义组件 ## 架构分层 - Pages 层:页面逻辑、页面结构、页面样式、页面配置 - Components 层:可复用组件 - Utils 层:工具函数、公共方法 - Services 层:API 接口封装、业务逻辑 - Store 层:全局状态管理 - 禁止页面直接调用 wx.request,必须通过 Services 层 ## 命名规范 - 页面目录:kebab-case(`user-profile`、`order-list`) - 组件目录:kebab-case(`custom-button`、`order-card`) - JS 变量/函数:camelCase(`getUserInfo`、`orderList`) - 常量:UPPER_SNAKE_CASE(`MAX_RETRY_COUNT`) - WXML 事件绑定:camelCase(`bindtap="handleButtonClick"`) - 自定义组件标签:kebab-case(`<custom-button>`) - 文件名:与目录名一致 - 命名语义化,禁止拼音、无意义缩写 ## 注释规范 - 每个页面/组件 JS 文件顶部必须有中文注释说明用途 - 每个 API 函数必须有中文注释,包含功能说明、参数、返回值 - 复杂业务逻辑必须添加中文行内注释 - WXML 复杂布局必须添加中文注释说明结构 - TODO 注释格式:`// TODO(作者): 具体待办事项描述` - 禁止无意义注释 ## 格式规范 - JS 文件缩进 2 空格 - WXML 文件缩进 2 空格 - WXSS 文件缩进 2 空格 - JSON 文件缩进 2 空格 - 单行代码长度不超过 100 字符 - 函数体长度不超过 40 行,超过必须拆分 ## 页面开发规范 ### 页面结构 ``` pages/ user-profile/ user-profile.js // 页面逻辑 user-profile.json // 页面配置 user-profile.wxml // 页面结构 user-profile.wxss // 页面样式 ``` ### 页面生命周期 - `onLoad(options)`:页面加载,获取路由参数,初始化数据 - `onShow()`:页面显示,刷新动态数据 - `onReady()`:页面初次渲染完成 - `onHide()`:页面隐藏 - `onUnload()`:页面卸载,清理资源 - `onPullDownRefresh()`:下拉刷新 - `onReachBottom()`:触底加载更多 ### 数据绑定 - 使用 `this.setData()` 更新视图数据 - 避免 `setData` 传递大量数据或频繁调用 - 仅传递需要更新的字段,避免整体刷新 - 使用数据路径更新嵌套数据:`this.setData({ 'list[0].name': 'new' })` ## 组件开发规范 ### 组件结构 ``` components/ custom-button/ custom-button.js custom-button.json custom-button.wxml custom-button.wxss ``` ### 组件通信 - 父传子:`properties` 声明接收属性 - 子传父:`triggerEvent` 触发自定义事件 - 跨组件:`getApp()` 全局状态或事件总线 ### 组件选项 ```javascript Component({ options: { multipleSlots: true, // 启用多插槽 addGlobalClass: true, // 接收全局样式 styleIsolation: 'shared' // 样式隔离策略 }, properties: { ... }, data: { ... }, methods: { ... } }) ``` ## 网络请求规范 - 封装统一的 `request` 方法,基于 `wx.request` - 统一处理 Token 注入、错误码、Loading - 统一响应格式:`{ code: number, message: string, data: T }` - 请求必须处理超时、网络错误和业务错误 - 并发请求使用 `Promise.all` 或 `Promise.allSettled` ```javascript // 请求封装示例 function request(options) { return new Promise((resolve, reject) => { wx.request({ url: BASE_URL + options.url, method: options.method || 'GET', data: options.data, header: { 'Authorization': `Bearer ${getToken()}`, 'Content-Type': 'application/json' }, success(res) { if (res.data.code === 0) { resolve(res.data.data) } else { wx.showToast({ title: res.data.message, icon: 'none' }) reject(res.data) } }, fail(err) { wx.showToast({ title: '网络异常', icon: 'none' }) reject(err) } }) }) } ``` ## 状态管理规范 - 简单状态:`getApp().globalData` - 中等复杂度:自定义 Store 模式(观察者模式) - 复杂应用:使用 `miniprogram-computed` 或 MobX-miniprogram - 状态变更必须通过方法调用,禁止直接修改 ## 样式规范 - 使用 `rpx` 作为尺寸单位适配不同屏幕 - 全局样式在 `app.wxss` 中定义 - 组件样式默认隔离,通过 `styleIsolation` 配置 - 使用 CSS 变量管理主题色 - 遵循 WeUI 设计规范 ## 代码质量强制要求 - 禁止魔法值:常量必须定义为命名常量 - 必须处理网络请求错误 - 必须处理加载、错误和空状态 - 图片必须使用相对路径或网络路径 - 禁止使用 `eval` 和 `Function` 构造函数 - `setData` 必须最小化更新范围 - 定时器必须在 `onUnload` 中清除 - 事件监听必须在 `onUnload` 中移除 ## 小程序特有规范 - 包体积:主包不超过 2MB,总包不超过 20MB - 使用分包加载优化首屏 - 使用 `wx.nextTick` 延迟更新 - 登录流程:`wx.login` 获取 code → 后端换取 openid/token - 支付流程:后端创建订单 → `wx.requestPayment` 发起支付 - 分享功能:`onShareAppMessage` / `onShareTimeline` - 使用 `wx.getSystemInfoSync()` 适配安全区域 ## 性能优化 - 长列表使用虚拟列表(`recycle-view`) - 图片使用 `lazy-load` 懒加载 - 使用 `wx.compressImage` 压缩图片 - 避免在 `onShow` 中频繁 `setData` - 使用分包预加载 - 使用 `wx.preloadPage` 预加载页面 ## 测试规范 - 使用微信开发者工具内置调试 - 真机调试覆盖 iOS 和 Android - 体验版测试完整业务流程 - 性能面板监控内存和帧率 ## 多平台差异 > 多端框架方案见 mobile-desktop/skills/uniapp;本章节仅覆盖各平台原生小程序的关键差异,平台专属 API 以各平台官方文档为准。 ### 平台差异总览 | 平台 | 开放平台 | API 前缀 | 模板/样式 | 开发者工具 | |------|---------|---------|----------|-----------| | 微信 | 微信开放平台/公众平台 | `wx.*` | WXML / WXSS | 微信开发者工具 | | 支付宝 | 支付宝开放平台 | `my.*` | AXML / ACSS | 支付宝小程序开发者工具 | | 抖音 | 字节小程序平台(抖音开放平台) | `tt.*` | TXML / TTSS | 抖音开发者工具 | - 三平台页面/组件生命周期与数据更新机制大体相似,但 API 能力、组件库与审核规则存在差异 - 本技能其余章节的 `wx.*` API 写法在其他平台需替换为对应前缀并核对参数 ### 登录与开放能力差异 - 微信:`wx.login` 获取 code,后端换取用户标识;支付用 `wx.requestPayment` - 支付宝:`my.getAuthCode` 获取授权码,后端换取用户信息;支付走支付宝支付能力 - 抖音:`tt.login` 获取登录凭证,后端换取用户标识 - 生态差异:微信依托公众号与微信支付生态,支付宝依托生活号与支付宝支付生态,抖音依托抖音开放平台与内容生态 ### 工具链差异 - 每个平台独立注册 AppID、独立上传审核发布,真机预览与调试能力以各平台官方 IDE 为准 ### 跨端选型建议 - 需要多端发布时,优先使用 Taro / UniApp 等跨端框架,一套代码适配微信/支付宝/抖音(UniApp 方案见 mobile-desktop/skills/uniapp) - 原生语法仅用于单端深度优化场景:性能调优、平台专属能力深度集成 - 跨端框架未覆盖的平台能力,通过各平台条件编译或原生插件补充 ## 最佳实践 - 使用 `Promise` 封装异步 API - 使用 `async/await` 简化异步代码 - 使用 `behaviors` 实现组件逻辑复用 - 使用 `observers` 监听属性变化 - 使用 `relations` 处理组件间关系 - 使用云开发简化后端逻辑
View on GitHub