微信小程序开发提示词(页面 WXML / WXSS / JS / JSON 分文件生成、生命周期、登录与分包)

用原生框架开发微信小程序页面时用:描述页面功能,得到按小程序目录规范拆分的四个文件代码,正确使用生命周期与数据绑定、封装网络请求、处理登录态与授权,并提醒包体积、分包和审核相关的注意事项。

NNathaniel bigo··原创首发·AI 辅助撰写
通用大模型 对话模型通用
你是一名有多个上线项目经验的微信小程序开发工程师。请帮我实现一个页面。

- 页面路径与功能:[页面路径与功能](例:pages/order/list 订单列表,下拉刷新、上拉加载、按状态切换)
- 开发方式:[原生小程序/Taro/uni-app]
- 后端接口:[接口地址、参数、返回格式]
- 登录方式:[如 wx.login 换取后端登录态]
- 需要用到的能力:[如下拉刷新、分享、订阅消息、扫码]

要求:
1. 按页面目录输出四个文件:页面配置、结构、样式、逻辑,各自职责清楚;需要的话补充公共组件和全局配置中需要增加的内容。
2. 生命周期:说明在页面加载、显示、下拉刷新、触底等生命周期中分别做什么;避免在显示时每次都重复请求不需要刷新的数据。
3. 数据绑定:只把界面需要的数据放进页面数据;修改数据时只更新变化的部分(例如按路径更新列表中的某一项),避免一次性传输大量数据导致卡顿。
4. 网络请求:封装统一的请求方法,处理登录态过期后自动重新登录并重试一次、统一错误提示、加载状态;服务器域名需要在后台配置。
5. 列表:分页加载、到底提示、空状态、加载失败重试,防止快速滚动时重复请求同一页。
6. 登录与授权:按当前平台规则处理,不在用户进入页面时就强制索要个人信息;获取手机号等能力按官方要求通过按钮由用户主动触发。
7. 性能与包体积:图片放到服务器或使用合适的压缩格式;主包体积受平台限制,说明何时需要分包以及分包的配置方式。
8. 审核提醒:与这个页面功能相关的常见审核要求(如隐私协议、用户主动触发授权)。

涉及平台限制(包体积上限、接口权限、授权规则)的数字和规则,注明「以微信官方文档当前说明为准」。

高亮处换成你自己的内容:[页面路径与功能]、[原生小程序/Taro/uni-app]、[接口地址、参数、返回格式]、[如 wx.login 换取后端登录态]、[如下拉刷新、分享、订阅消息、扫码]

ChatGPT Plus 充值

已被复制 0 次

使用说明

怎么填变量:[开发方式] 一定要写清楚:原生小程序、Taro、uni-app 的写法完全不同。[需要用到的能力] 里提到的分享、订阅消息、获取手机号等能力,各有平台规则和权限要求,AI 会一并提醒。

常见坑:

  • 每次更新数据都把整个列表重新传给页面,列表一长就明显卡顿。只更新变化的那一项。
  • 用户一进页面就弹出授权或索要个人信息,体验差,也容易在审核时被拒。按需、由用户主动触发。
  • 登录态过期的处理分散在各个页面里,到处重复。在统一的请求方法里集中处理。

追问技巧:追问「把这个页面的请求方法封装成可以在全部页面复用的模块,并加上请求去重」,或「主包快超出限制了,帮我规划分包方案」。

示例输出

示例,仅供参考(逻辑文件节选)
js
// pages/order/list/list.js
const { request } = require('../../../utils/request')

Page({
  data: { status: 'all', list: [], page: 1, loading: false, finished: false },

  onLoad() { this.loadPage(true) },

  onPullDownRefresh() {
    this.loadPage(true).finally(() => wx.stopPullDownRefresh())
  },

  onReachBottom() { this.loadPage(false) },

  async loadPage(reset) {
    if (this.data.loading || (!reset && this.data.finished)) return   // 防止重复请求
    const page = reset ? 1 : this.data.page
    this.setData({ loading: true })
    try {
      const res = await request({ url: '/api/orders', data: { status: this.data.status, page } })
      this.setData({
        list: reset ? res.items : this.data.list.concat(res.items),
        page: page + 1,
        finished: res.items.length < 20,
      })
    } catch (e) {
      wx.showToast({ title: '加载失败,下拉重试', icon: 'none' })
    } finally {
      this.setData({ loading: false })
    }
  },
})

同款作品

用这条提示词做出来的作品;原作者会因此获得积分

做同款

还没有同款,来做第一个。

Nathaniel 的更多内容

同主题

同模型

0 条评论

登录 后参与评论

还没有评论,来抢沙发~