如何用AI开发减肥记录小程序(附教程)

2025-11-03 17:16:49
文章摘要
本文详细介绍用 AI 开发减肥记录小程序的方法。先阐述用 Cursor 开发的步骤,包括项目初始化明确需求与技术栈、核心功能,梳理业务逻辑,开发健康计划、首页、“我的”页面等;还提到用 Deepseek 优化 UI 及解决报错的办法。此外,说明了企业类型小程序接入 AI 功能的全流程,含接入步骤、测试、样式优化及上线发布注意事项。

一、Cursor 开发减肥记录小程序详解

一)项目初始化明确自己的需求

1、技术栈

前端:JavaScript+WXML+WXSS

后端:为了简便开发,数据缓存在用户手机本地。

2、核心功能

收集用户的基本信息,例:身高、体重。

根据 BMI,自动给出合理的健康计划。

健康计划完成后可以打卡。

将数据保留在本地缓存。

二)梳理 Cursor 能看懂的业务逻辑

根据需求组织项目框架语句,确保 Cursor 可以听懂。


1、对上述核心功能进行总结

我们需要 3 个页面(首页+健康计划+我的)

首页是 BMI 显示、日历打卡、体重记录。

健康计划页面是 BMI、进度条、健康计划。

我的页面由 2 部分组成,基本信息、名词解释。

2、构建出大致的 UI

如果没有设计思路,建议上微信看看同类型小程序是怎么做的。

给大家一个好的建议。可以搜“体重管理”,会出来一大堆小程序,看哪个顺眼,直接拿去模仿。


3、组织 Cursor 语句

举例:

我要做一个微信小程序,小程序是一个体重管理小程序,可以通过 BMI 判断一个人的健康状况,并且给出合理的健康计划用于控制体重。

 

要求:

 

1)拥有三个导航页面;

2)第一个导航页面为首页,包含 BMI 展示、打卡日历和体重记录;

3)第二个导航页面为健康计划,包含 BMI 显示、进度条和健康计划;

4)第三个导航页面为我的,包含基本信息编辑和健康名词解释;

5)提供个性化的健康计划,且根据 BMI 的不同显示不同的计划。

注意:样式不需要着重描述,让 Cursor 自由发挥就行,Cursor 无法把握小程序的边界,要么太宽,要么太窄,最后免不了要用 Deepseek 优化样式,干脆不描述,还能提高效率。

建议:在选择大模型的时候最好用 Claude3.7 或者 Claude3.5,GPT 虽然生成的很快,但是效果不如 Claude。


三)基于业务逻辑开发对应页面

1、健康计划页面

这是小程序最为核心的功能,需要在这一步完善页面的逻辑和 UI 设计。

当前页面只有一个功能:根据 BMI 生成合理的健康计划,UI 设计可以参考同类型的小程序。

注意:Cursor 应该会在第一步就生成完三个页面并且功能也完善的差不多,但是 Cursor 会出现各种各样的毛病,例如:BMI 无法正确统一,健康计划没有进度条,打卡日历不能正确打卡,这就需要让 Cursor 重新生成。


组织 Cursor 语句,举例:

帮我完善该小程序的健康计划页面。

 

要求:

 

1)统一管理 BMI,BMI 是变化的,只要信息有所改变,所有 BMI 都需要一起改变;

2)只有健康计划进度 100%,才能打卡;

3)健康计划不是固定的,而是根据 BMI 的不同做出不同的改变;

4)页面最上方可以显示当前 BMI 信息。



2、  完善首页

首页 UI 设计很简单,主要功能两个:打卡、记录。

因为一次描述的太多效果不是很好,所以我们在这分两步操作,先完善打卡,再完善记录功能。


组织 Cursor 语句,举例:


帮我完善该小程序首页的打卡功能。

 

要求:

 

1)当健康计划进度 100%时,可以打卡,打卡后当前日历颜色加深;

2)健康计划应该存在总打卡天数和连续打卡,将数据缓存在本地;

3)其他功能不要改变,只针对打卡日历修改。


组织 Cursor 语句,举例:

帮我完善该小程序首页的体重记录功能。

 

要求:

 

1)右下角生成一个添加按钮,点击即可添加体重记录;

2)体重记录的体重一旦更新,会同步到所有的 BMI;

3)体重记录可以被删除,删除会弹出确认框;

4)如果是最新的体重记录删除,自动更新为下一条记录,如果只有一条体重记录,删除后不会有任何变化。


注意:要求一定要描述清楚,不然 Cursor 就会按照它的想法来做。



3、完善我的页面

我的页面的功能有两个:编辑个人信息、查看名词解释,还是分成两步进行描述。


组织 Cursor 语句,举例:

帮我完善该小程序的我的页面的个人信息。

 

1)个人信息在没有填写的时候,文本框里面有提示写什么;

2)只有身高和体重是必填项,并且填完后,自动更新 BMI;

3)性别和年龄全部做成选择的形式来区分选填项,性别为“男”“女”,年龄从 0-100,且从 30 开始浮动,而不是从 0 开始浮动;


组织 Cursor 语句,例:

帮我完善该小程序的我的页面的健康名词解释。

 

要求:

 

1)健康名词解释应该包含:BMI 指数、基础代谢、营养摄入、热量;

2)点击不同的名词跳到对应的页面,用页面加名称的形式显示不同的内容,不需要生成 4 个页面;

3)每个名词的解释都必须足够清晰;


到此,小程序的全部功能就完成了,但是还有一些细节需要改进。例:样式调整、bug 修复。这就需要第四步操作了。



四)为什么不用 Cursor 优化 UI


优化 UI 的要求不要太高,因为大家都不是 UI 设计师,所以把页面全部交给 Deepseek 优化就行

为什么不用 Cursor 呢?

前面我就提到了,Cursor 不太会设计小程序 UI,Cursor 可以把握上下边界,但是总是把握不好左右边界。

而且对于刚注册的初学者来说,可以节省使用次数。

所以我建议使用 Deepseek,虽然 Deepseek 也不是专业的,但是对于这样的小程序来说已经足够了。

 

1、使用 Deepseek 优化 UI

无脑操作即可,只需要复制粘贴。

例:直接将 WXML 和 WXSS 代码发给 Deepseek,要求:

1)颜色不变,只修改 WXSS,要符合一个正常页面的布局和大小;

2)仔细分析 WXML 和 WXSS 的对应关系。

注意:你需要发送一份完整的 WXML 和 WXSS 代码。一定要加上“只修改 WXSS”,不然的话,Deepseek 会先优化你的 WXML,再优化 WXSS,如果你把 WXML 也复制粘贴了,到时候你就会发现,项目跑不起来了。

我的输入:

帮我优化小程序的页面。

要求:

1、只修改wxss,符合正常页面的布局和大小;

2、请仔细分析WXML和WXSS的对应关系。

 

这是我的WXML文件

 

贴你的 wxss代码


Deepseek 生成完后,直接复制粘贴即可。

注意:每个页面都可以这么做,生成的结果直接复制粘贴就行。

2、报错的解决办法

你在使用 Cursor 的过程中一定会报错。之前我都是建议先将报错的信息和代码发给 Deepseek,再把 Deepseek 生成的错误原因发给 Cursor 解决。现在我认为当小程序的逻辑不多说时,直接用 Cursor 解决也没问题,而且更加高效。

例:为什么点击日历,会一直提示当前体重记录?


我的输入:不需要任何代码,只需要添加页面,将 pages 添加进去。


Cursor 的输出:

这是因为在日历组件的点击事件中触发了显示记录的逻辑。让我们修改一下代码,只在当天完成任务时才允许打卡,其他日期点击不做响应:

才允许打卡,其他日期点击不做响应:

// 在日历组件中修改 selectDate 方法

selectDate(e) {

  const { date } = e.currentTarget.dataset;

  if (!date) return;

  

  // 只处理当天的点击事件

  const today = this.formatDate(new Date());

  if (date === today) {

    this.checkCanSignIn(date);

  }

}

 

// 检查是否可以打卡

checkCanSignIn(date) {

  // 获取当天健康计划完成情况

  const planKey = `plan_${date}`;

  const todayPlan = wx.getStorageSync(planKey) || [];

  

  // 检查是否所有任务都已完成

  const allCompleted = todayPlan.length > 0 && todayPlan.every(item => item.completed);

  

  if (allCompleted) {

    // 如果已完成所有任务,允许打卡

    if (!this.properties.signedDays.includes(date)) {

      this.triggerEvent('onSignIn', { date });

    }

  } else {

    // 如果未完成所有任务,提示用户

wx.showToast({

title: '请先完成今日健康计划',

icon: 'none'

    });

  }

}

同时,修改首页的相关代码:

// 删除或修改 onSelectDate 方法

onSelectDate(e) {

  // 不需要显示记录的逻辑,可以删除这个方法

  // 或者只在特定情况下显示

console.log('日期选择:', e.detail.date);

}

 

// 保留打卡相关的方法

onSignIn(e) {

  const { date } = e.detail;

  const planKey = `plan_${date}`;

  const todayPlan = wx.getStorageSync(planKey) || [];

  

  const allCompleted = todayPlan.length > 0 && todayPlan.every(item => item.completed);

  

  if (allCompleted) {

    const signedDays = [...this.data.signedDays];

    if (!signedDays.includes(date)) {

signedDays.push(date);

      this.setData({ signedDays });

wx.setStorageSync('signedDays', signedDays);

      

wx.showToast({

title: '打卡成功',

icon: 'success'

      });

    }

  } else {

wx.showToast({

title: '请先完成今日健康计划',

icon: 'none'

    });

  }

}

这样修改后:

只有点击当天的日期才会触发打卡检查

其他日期点击不会有任何响应

保留了打卡成功的提示

移除了显示历史记录的弹窗

 

这样的交互逻辑会更加清晰和合理。


将 Cursor 生成的修改代码全部应用即可。

只有到这一步,小程序才算是全部完工。

 

二、  、小程序接入 AI 功能全流程

 

只有企业类型的微信小程序才能接入 AI 功能,个人类型的不支持接入。

1、  进入火山引擎

火山引擎-你的AI云

 

2、搜索火山方舟


3、点击 API 接入


4、选择你想接入的大模型点击我已完成调试


5、 生成的下述代码即是可以直接使用的接口


6、接口测试,先用 Cursor 生成一个网页,看网页能否调通

提示词

curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \

-H "Content-Type: application/json" \

-H "Authorization: 替换成你的key" \

-d '{

    "model": "deepseek-v3-250324",

    "messages": [

      {"role": "system","content": "你是人工智能助手."},

      {"role": "user","content": "用户输入的问题"}

    ]

  }'

 

帮我在 health-plan.wxml 末尾,调用上述接口,用户输入的内容替换 content 字段“用户输入的问题”


7、将 Cursor 生成后的静态网页打开,输入问题,发现可以使用,接口无误


8、用 Cursor 在小程序中调用该接口,注意描述要具体到小程序的子页面

health-plan.wxml 是我要加 AI 功能的页面,提示词如下:


curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \

-H "Content-Type: application/json" \

-H "Authorization: 替换成你的key" \

-d '{

    "model": "deepseek-v3-250324",

    "messages": [

      {"role": "system","content": "你是人工智能助手."},

      {"role": "user","content": "用户输入的问题"}

    ]

  }'

 

帮我在 health-plan.wxml 末尾,调用上述接口,用户输入的内容替换content 字段“用户输入的问题”


9、接入后微信开发者工具如果没有任何反应,需要临时关闭域名检查

点击开发者工具右上角的详情,勾选本地设置中的不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书。


10、上述设置后微信开发者工具编译预览效果如下:


测试后发现 AI 回复的内容是 markdown 形式,直接渲染出来这种样式,有点丑


让 Cursor 重新优化:大家可以参考我这个提示词:

当用户输入健康问题后,系统会将问题嵌入到提示词中。

并要求 AI 以营养专家的身份回答,同时返回 HTML+CSS 格式的卡片。

返回的 HTML 内容会通过 rich-text 组件展示出来。


这里提供一个更好的提示词,让最终渲染出来的页面梗好看:

你是一名资深的营养专家,用户的问题是【BMI过高,经常熬夜】,请你进行认真解答,包括问题分析、解决方案、后续建议等。并帮我生成美观且响应式的HTML+CSS代码

 

## 技术要求

- 请使用HTML、TailwindCSS和少量必要的JavaScript

- 引用Tailwind CSS(v3.0+)通过CDN

- 页面需完全响应式,在移动设备和桌面端都能良好显示

 

## 图片资源

- 请使用https://picsum.photos/1920/1080?random=1作为图片展示填充

- 每个图片链接使用不同随机参数,保证图片不同

 

## 图标要求

- 使用Font Awesome或Material Icons等专业图标库 (通过CDN引用)

- 避免使用emoji作为图标替代品

 

## 设计风格

- 采用圆角布局

- 主题色调使用莫兰迪色系,避免强烈的视觉刺激,淡雅高级

- 增加留白、毛玻璃、半透明设计元素


11、发布上线接入 AI 功能的小程序,必须添加深度合成类目



12、服务类目选择深度合成-AI 问答的 2.2


13、回到火山引擎下载资质和订单合同,火山引擎要认证成和微信小程序主体一致的企业


14、需要下载两个文件,一个是合同管理中的证明文件


一个是订单合同


15、导出的这两个是 pdf 文档,要自行拼接成一张长图,小程序只支持图片,需要注意的是订单合同导出来的合同需要加盖你的公章鲜章,大白话就是要真实盖章才行,不然通过不了审核。



16、正式版要登录微信小程序管理后台,进入开发->开发设置->服务器域名,在 request 合法域名中添加 Cursor 给你的请求地址。


至此,小程序接入 AI 功能整个流程都完整的走了一遍


今天的分享就到这里啦 ,关注我后续更新更多AI知识🔍!




 

声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。