- 什么是带后端的微信小程序开发
基础小程序只能处理当前页面里的内容。要保存用户数据、区分账号和上传文件,还需要后端。
前面已经用 Trae、HBuilderX 和微信开发者工具,做出了一个可以在微信里运行的贪吃蛇小程序。
但这时候,所有内容还只存在当前手机和当前页面里。如果用户换一台手机,之前的数据就找不到了;如果两个人同时使用,小程序也不知道哪一条记录属于谁;如果以后要接会员、订单、文件上传,单靠前端页面也没有办法安全地完成。
下面直接在原项目上增加后端。每次只接一项能力,然后同时去小程序页面和 CloudBase 控制台确认结果。
1.1 带后端的小程序多了什么
你可以把小程序前端理解成一个“服务窗口”。用户在窗口里填写信息、点击按钮、查看结果;但窗口本身不会决定这张工单属于谁、谁有权限修改、数据应该保存多久。
真正处理这些事情的,是后端。
比如用户点击“提交工单”以后,后端需要先确认当前是谁,再检查内容是不是完整,然后把工单保存到云端。用户下一次打开小程序时,后端还要只把属于他的记录返回回来。
同样的道理,下面这些事情也不能为了省事直接放在前端:
AppSecret、支付密钥、AI Key 等真正的密钥;
用户身份、管理员权限和工单归属;
价格、库存、积分、订单状态等关键规则;
内容审核、操作日志和防止重复提交。
一句话理解:前端负责让用户操作,后端负责让业务可信。
1.2 要做的应用:企业售后服务中心
上一节的贪吃蛇不需要保存业务数据。这里换成企业里更常见的例子——Northstar Service Hub。
它是一个“会员 + 售后工单”小程序。用户打开首页以后,可以看到会员状态、常用服务和最近工单;遇到问题时,可以填写描述、上传图片,再查看后续处理进度。
这个例子不只适合某一个行业。你可以把它改成零售品牌的会员中心、酒店的住客报修、汽车品牌的车主服务、保险公司的材料补交入口,或者消费电子产品的维修进度查询。
你平时在微信里见到的品牌会员中心,大多也是这种思路:小程序负责让用户快速打开和操作,真正的订单、积分和售后记录则交给后端处理。
上一节看到的 Uber 小程序也是这样。用户看到的是地图、路线、叫车状态和付款页面,后端还要负责行程、司机匹配、订单状态和支付结果。
1.3 小程序后端的几种做法
给小程序接后端,常见的有三条路。
先说结论:小程序需要后端,不等于必须购买 CloudBase。 CloudBase 是这里选择的入门路线,因为它和微信身份、云函数、数据库的衔接最短。公司已经有后端时可以直接接入原来的服务;以后想换成其他云服务,也可以通过 HTTPS 接口连接。
第一种方式,是使用 微信·云开发 / CloudBase 原生能力。小程序直接调用云函数,云函数再去操作文档型数据库和云存储。这条路线和微信身份结合得最近,不需要你第一天就自己搭登录系统、买服务器和配置 HTTPS。
第二种方式,是使用 CloudBase 云托管。等项目以后需要同时服务小程序、网页和管理后台,或者已经有 Express、NestJS、FastAPI 这类完整后端时,再考虑这条路。
第三种方式,是接入企业原来就有的后端。腾讯云现在可以用 AnyService 把已有服务接进小程序;如果公司本来就有后端团队,不需要为了小程序再重做一套。
如果你在文档里还看到“HTTP 网关”,先别把它和 AnyService 当成同一个东西。AnyService 负责连接公司原来的服务,HTTP 网关主要给 CloudBase 里的云函数和云托管提供 HTTP 访问入口。
这三条路没有谁一定更高级。第一次做带后端小程序,先选择最容易跑通的一条:
微信·云开发原生环境 → 云函数 → 文档型数据库 / 云存储。
腾讯云现在还支持 PostgreSQL。这次先不使用;等项目真的遇到复杂关联、SQL 或强事务需求时,再考虑迁移。
这里有一个限制:PostgreSQL 只能在新建环境时选择,原来的传统环境不能直接切换,微信开发者工具当前也不能创建。真要使用,需要去 CloudBase 控制台新建环境,再迁移数据和调整接入方式。
这个练习先不增加这层难度。
1.4 腾讯云目前推荐的 AI 开发方式
如果你现在打开腾讯云最新版文档,会看到一个新的入口——CloudBase AI 插件。你可以把它理解成一个打包好的 AI 开发工具,一次帮你接上 MCP Server、Agent Skills 和 Hooks。你的 AI 工具如果已经支持一键安装,就优先选择这个入口。
你可以把这套插件理解成专门给 AI 准备的“云开发说明书和操作工具”。接好以后,AI 不只是知道怎样写页面,还能按照 CloudBase 当前的规范理解云函数、微信身份、数据库权限和部署流程。
开发工具继续使用 Trae。腾讯云当前给 Trae 的专门指南,仍然是先接入 CloudBase MCP,再按需要安装和读取 Skills,所以后面的操作沿用这条路线。以后 Trae 支持一键插件时,再直接换成插件即可,不需要两套一起安装。
这里需要注意一个容易混淆的名字:mp-skills 是把小程序业务能力开放给微信 AI 调用的另一套工具,并不是普通小程序接后端时必须安装的东西。这一章只使用 CloudBase 开发相关 Skills,不把两条路线混在一起。
- 环境准备
如果已经完成上一节,就不需要重新安装所有软件。继续使用原来的项目,只多准备 CloudBase 这一块。
2.1 本教程会用到的四个工具
Northstar Service Hub 会同时用到四个工具,它们各自负责不同的环节:
第一个是 Trae。它仍然负责打开真实项目、和 AI 对话、修改文件,并连接 CloudBase MCP。
第二个是 HBuilderX。它继续负责 uni-app 项目的构建,把源项目运行到微信小程序模拟器。
第三个是 微信开发者工具。除了预览页面,它还负责开通云开发、查看环境、部署云函数和上传版本。
第四个是 CloudBase 控制台。你会在这里看到数据库记录、云函数日志、存储文件和环境状态。
后面如果一时分不清该看哪个窗口,就按这个办法找:代码在 Trae,构建在 HBuilderX,小程序页面在微信开发者工具,云端数据和日志在 CloudBase 控制台。
2.2 确认小程序账号和 AppID
开始接后端之前,先回到微信公众平台确认一次 AppID。
接着检查 HBuilderX 项目里的 AppID 是否和它一致,再确认微信开发者工具登录的是有这个小程序开发权限的账号。
如果 AppID 填错,后面最常见的现象就是:看不到正确的云环境,或者上传后的版本出现在另一个项目里。遇到这类问题时,不要急着让 AI 重写代码,先把小程序身份确认好。
2.3 在 Trae 中接入 CloudBase MCP 和 Skills
CloudBase 整体优先推荐一键插件。Trae 当前仍按照腾讯云的专门指南接入 MCP 和 Skills。
打开腾讯云官方的 Trae 配置指南,按照页面说明在 Trae 的 MCP 设置中加入 CloudBase。第一次使用时,优先选择官方的登录和环境选择流程,不要为了省一步把 SecretID、SecretKey 或 CloudBase API Key 粘贴进提示词。
连接完成以后,我先没有急着让 AI 做页面,而是对它说:
请检查 CloudBase 是否连接成功,并告诉我当前环境。只检查,不要修改项目。
如果 AI 能正确识别当前项目类型、当前环境,并列出准备使用的 Skills,就说明这一层已经准备好了。
如果你的 Trae 暂时不能使用 MCP,也不用紧张。后面的提示词仍然可以直接使用,只是部署、查看日志和数据库这些操作需要你自己在控制台中完成。
2.4 在微信开发者工具中开通云开发
打开上一节的项目,然后找到微信开发者工具顶部的“云开发”入口。
这里先不要去购买 19.9 元/月的个人版。如果页面让你选择上海或新加坡、PostgreSQL 和付费套餐,说明进入了 CloudBase 控制台的新购流程,不是本次操作要走的入口。直接退出购买页,不要点击“立即购买”。
腾讯云当前的创建环境指南会先让你根据场景选择入口。微信小程序从微信开发者工具里创建,环境会自动和当前小程序关联。
如果你从 CloudBase 控制台进入,会先看到下面的登录页。这里可以使用腾讯云账号,也可以使用当前小程序所属的微信公众平台账号登录。
第一次点击时,开发者工具会引导你创建环境。环境名称可以写成容易辨认的名字,例如 northstar-dev。
截至 2026 年 8 月,CloudBase 为每个云开发账号提供一个免费体验环境,每月包含 3000 资源点,足够完成这一章的云函数、数据库、权限和日志练习。免费环境用于开发体验;小程序正式发布以后,到期时间会变成上线后的第 15 天。如果只是跟着教程操作和补截图,现在不需要付费;准备长期上线时,再决定升级个人版还是接入企业已有后端。具体限制以腾讯云的价格文档为准。
如果微信开发者工具仍然只把你带到购买页,可以先到“微信公众平台 → 行业能力 → 小程序成长计划”报名。当前第二期活动时间为 2026 年 7 月 1 日至 12 月 31 日;符合条件的新用户可以获得一个有效期 6 个月的个人版环境。报名条件和权益以小程序成长计划页面为准。
这里不要把环境名称、环境 ID 和 AppID 混在一起:
AppID 是小程序的身份;
环境名称是给人看的名字;
环境 ID 是这个后端环境的唯一编号。
开始创建以后,平台通常需要几分钟初始化资源。只要最后能进入环境总览,并看到数据库、云函数和存储入口,就说明创建成功。
正式项目一般会把开发、测试和生产环境分开。练习时只使用开发环境,不需要为了截图额外创建可能产生费用的环境。
2.5 打开上一节的基础项目
环境创建完成以后,回到 HBuilderX 和 Trae,打开上一节已经能运行的小程序项目。确认你修改的是源项目,而不是 HBuilderX 自动生成的 unpackage 编译结果。
然后先运行一次原项目:
在 HBuilderX 中选择“运行 → 运行到小程序模拟器 → 微信开发者工具”;
等待输出区域显示编译完成;
确认原来的页面还可以正常打开。
这一步相当于先记住“接后端之前项目是什么样子”。如果后面出现问题,你就知道是这一轮改动带来的,而不是旧环境本身已经坏了。
这一章只验证“编译到微信小程序”这一条链路。如果同一个 uni-app 项目还要运行到 H5、App 或其他小程序,后端身份和 SDK 接入方式会不同,需要再按腾讯云的 UniApp 指南分别处理。
- 小程序页面开发
后端和 CloudBase 环境准备好以后,就可以开始修改小程序页面。
和上一节一样,先做出能运行的页面,再逐步接入后端。每加一项,都回到微信开发者工具和 CloudBase 控制台确认结果。
3.1 让 AI 先做页面
打开 Trae,载入前面已经准备好的小程序项目之后,我先没有急着让 AI 写云函数,而是先把整个产品目标告诉它:
请把当前项目改成客户服务小程序。先做会员首页、创建服务请求和我的工单三个页面,使用演示数据。
也就是说,我不是让 AI 一上来就同时处理登录、数据库、上传和支付,而是先抛出一个完整目标,让它把用户能看到的第一版搭起来。
3.2 看清 AI 修改了哪些文件
Trae 收到这条指令以后,会先阅读当前项目结构,判断应该增加哪些页面、在哪里放数据访问,再直接修改真实文件。
你可以在对话区看到它的计划,也可以看到每一次文件变更。
如果你发现 AI 准备新建另一个项目,可以马上告诉它:“不要另建项目,只修改当前工作区。”
如果这一轮结果不满意,也不用紧张。Trae 仍然提供回退能力,可以把工程恢复到本次修改之前。
3.3 在 HBuilderX 和微信开发者工具中查看效果
AI 完成第一轮开发之后,代码已经落在项目里,但还没有看到用户视角的效果。现在回到开发者工具把它跑起来。
回到 HBuilderX,选择“运行 → 运行到小程序模拟器 → 微信开发者工具”。
底部输出窗口会显示编译过程。如果最终没有报错,就可以切到微信开发者工具查看首页、创建工单和我的工单页面。
这一轮先只看界面:按钮好不好点、表单清不清楚、空状态有没有告诉用户下一步做什么。后端还没有真正接上,所以暂时看到演示数据是正常的。
3.4 用自然语言继续调整页面
AI 一开始生成的页面不一定刚好符合你的想法。在我这次尝试里,我希望首页更像一个真实品牌的客户服务入口,而不是把所有功能都堆在第一屏。
所以我继续对 AI 说:
请简化首页,只保留会员状态、三个常用服务和最近一条工单。
首页清楚以后,再改表单:
请把工单的问题信息和联系方式分开,页面不要出现技术词。
修改完成后,再回到微信开发者工具刷新页面。如果没有立刻变化,可以先在 HBuilderX 中停止运行,再重新运行到微信小程序模拟器。
3.5 第一版页面效果
经过几轮 自然语言描述 → AI 修改 → 模拟器查看 → 继续调整,你应该先得到一个页面逻辑清楚的前端版本。
下面是 Northstar Service Hub 的页面效果:
页面完成后,里面的工单仍然只是演示数据。下一步才让它真正保存到云端。
- 小程序后端开发
页面能够在微信开发者工具中正常打开后,就可以连接最重要的一条后端链路:
用户点击提交 → 小程序调用云函数 → 后端识别当前用户 → 工单保存到数据库 → 页面显示工单编号。
这一部分仍然采用提示词驱动。每次只给 AI 一个小任务,看到成功结果以后,再继续下一步。
4.1 先让页面成功调用一次云函数
第一次接后端时,不要马上创建十几个函数。先做一个最简单的连接测试。
这时候,我继续在 Trae 里对 AI 说:
请把当前小程序接到 CloudBase,并在首页增加“检查后端连接”按钮。连接成功时显示当前时间。完成后告诉我需要部署哪个云函数。
AI 修改完成以后,你还需要在微信开发者工具或 CloudBase 控制台中部署这个云函数。
如果点击检查以后,页面显示“服务正常”,同时云函数日志里出现了一次调用,就说明第一条“前端 → 后端 → 返回结果”的链路已经跑通。
4.2 让后端知道“当前是谁”
连接跑通以后,再处理用户身份。
这里有一个地方需要特别提醒 AI:不能让前端自己说“我是用户 A”。小程序前端提交的用户标识或“我是管理员”都可能被修改,真正可信的身份要由云函数从微信调用上下文中获取。
我继续对 AI 说:
请让云函数识别当前用户,不要使用前端传来的身份。页面和日志不要显示完整 OpenID。
在微信·云开发原生链路里,大多数小程序不需要自己再搭一套登录系统。当前用户是谁,应该由云函数从微信可信上下文里识别。
4.3 让第一张工单真正保存下来
首页虽然已经能调用云函数,但它现在只返回一句“服务正常”,还没有真正保存任何东西。
现在只做一件事:让用户填写一张工单,点击提交之后,把它保存到云端。先不要同时做会员积分、支付和客服后台,否则一旦出错,你很难判断问题到底发生在哪里。
这时候,我继续在 Trae 里对 AI 说:
请把“创建服务请求”接到云端。提交后保存工单,并在页面显示工单编号。
AI 修改完成后,再确认部署位置:
请告诉我需要部署哪个云函数,以及去哪里查看保存结果。
部署完成后,打开 CloudBase 的文档型数据库,在“集合管理”中找到或创建工单集合。腾讯云当前的入口说明如下:
接着在模拟器里提交一张工单。页面如果显示了工单编号,同时数据库里出现了一条记录,就说明第一张工单已经真正保存成功。
第一张工单保存成功后,我又故意快速点了两次。这时候,我继续对 AI 说:
请防止重复提交。同一次提交即使请求两次,也只能生成一张工单。完成后告诉我怎么测试。
要注意,只在页面上快速点两次还不够,因为这可能只是按钮做了防重复点击。再按提示词用同一个请求编号请求两次,结果仍然只有一张工单,才说明后端也处理好了。
4.4 让用户只能看到自己的工单
工单保存成功以后,还有一个很重要的问题:用户 A 能不能看到用户 B 的工单?
这时候你可能会想,我已经在数据库里设置了权限,云函数里是不是就不用再检查了?答案是不行。数据库规则挡的是小程序直接操作数据;云函数就像后台真正办理业务的人,它仍然要再确认一次“这张工单是不是当前用户的”。
我继续对 AI 说:
请完成“我的工单”页面,保证每个用户只能看到自己的工单。把相关权限设置好,完成后告诉我怎么用两个微信账号测试。
这里还有一个容易踩坑的地方:通过云函数或管理端保存记录时,系统不会自动生成 _openid。提示词已经要求 AI 主动写入从可信上下文取得的归属信息,不让前端自己决定。
修改完成后,先用自己的微信提交一张工单,再把另一位同事加入体验成员,用他的微信打开体验版。如果两个账号看到的内容完全分开,就说明这一层权限已经生效。
4.5 接入图片凭证
文字工单稳定以后,再增加图片。这样就算上传出现问题,也不会影响你判断文字工单本身是否已经成功。
我继续对 AI 说:
请给工单增加图片上传。上传失败时保留已经填写的内容,并告诉用户怎样重试。
上传能用以后,再处理保存方式和限制:
请把图片放在云存储里,数据库只保存文件标识。
请限制图片的数量、大小和格式。
如果现在只是你自己和同事使用的体验版,内容审核可以先不打开。准备给真实用户使用时,再让 AI 给文字、图片、音频和文档增加审核流程:新内容先进入“待审核”,通过以后再展示,可疑内容交给人工检查。腾讯云内容审核会单独计费,确认需要以后再开启即可。
4.6 出现问题怎么办:继续把现象告诉 AI
AI 生成的后端也不一定第一次就能完全跑通。有时候页面看起来没有问题,真正点击提交以后,却可能遇到云函数没有部署、环境 ID 填错、数据库拒绝写入等情况。
在这些时候,不要只对 AI 说一句“提交不了”,也不要让它立刻重写整个项目。你可以把自己刚才点了什么、页面显示了什么,以及控制台里最相关的一条错误一起告诉它。
例如:
提交工单后一直显示“处理中”。这是页面错误和已脱敏的云函数日志:【粘贴内容】。请找出原因,只修改出错的地方。
CloudBase 当前也提供日志检索。你可以按时间、资源和关键词找到刚才那一次调用,而不是在几百行输出里盲找。当前操作入口如下:
让 AI 输出日志时,可以保留请求编号、动作、工单编号、结果、耗时和错误码,但不要记录完整 OpenID、手机号、Token、密钥和工单敏感正文。
4.7 同时检查页面与云端记录
经过一轮又一轮的 自然语言叙述 → AI 修改 → 部署云函数 → 在前端操作 → 去数据库和日志中确认,你最终应该得到这样一个版本:
用户可以看到会员首页;
用户可以提交一张真实工单;
工单会保存到云端;
连续点击不会创建重复工单;
两个微信账号只能看到各自的数据;
图片进入云存储,数据库只保存文件标识;
出现问题时,可以在日志中找到对应调用。
这一次的验证和贪吃蛇不太一样。贪吃蛇只要在屏幕上能玩就基本说明成功;带后端的小程序则要同时看两个地方:页面上的结果和云端留下的记录。
- 小程序发布
页面和后端链路完成以后,把这个版本上传成体验版,再让两个真实账号在手机上验证。
普通的 AppID、备案、服务类目和审核步骤与上一节相同,这里重点讲带后端版本多出来的检查。
5.1 上传前先检查环境
上传以前,先回到 Trae 对 AI 说:
请检查这个小程序能不能上传体验版。重点检查环境、云函数、演示数据、调试功能、密钥和权限,只列出上传前必须修改的问题。
现在只有一个开发环境时,你可能暂时感觉不到区别。等项目准备给更多人使用以后,再分别建立开发、测试和生产环境,并让 AI 把环境 ID 集中配置。环境 ID 本身不是密钥,但截图给别人看时,仍然建议遮住一部分。
5.2 在微信开发者工具中上传体验版
确认 AppID、云环境和云函数版本都正确以后,在微信开发者工具中点击“上传”,填写版本号和项目备注。
上传完成后,回到微信公众平台的“版本管理”,把刚上传的开发版本设为体验版。
注意:小程序前端上传成功,不代表云函数也自动更新了。每次修改后端以后,都要单独确认云函数已经部署到体验版正在使用的环境。
5.3 用两个真实账号再试一次
体验版阶段不要只让开发者自己试。把另一位同事加入体验成员,然后按下面的顺序走一遍:
账号 A 创建一张工单,并记住工单编号;
账号 A 在“我的工单”里看到这条记录;
账号 B 打开小程序,确认看不到账号 A 的工单;
账号 B 再创建一张自己的工单;
回到账号 A,确认两个人的数据没有混在一起。
真机上还要顺手测试网络断开、图片权限、返回页面和重复点击。发现问题以后,仍然按照“描述现象 → AI 最小修复 → 重新部署 → 再次验证”的方式继续迭代。
5.4 体验版能打开以后,先别急着正式发布
这一次的小程序和贪吃蛇不太一样,因为它会保存用户的联系方式、问题描述和图片。正式给用户使用之前,你还需要在公众平台上把隐私说明、服务类目和备案信息补充完整。
如果后面继续加入支付、CRM 或客服后台,也不要把这些能力一次全部塞进当前版本。先让文字工单稳定运行,再一项一项增加。每增加一项,都重新在模拟器和体验版里走一遍完整流程。
以后如果想增加实时聊天或流式返回,也不用一看到 WebSocket、SSE 就马上迁移云托管。腾讯云当前的 HTTP 云函数已经支持这些能力,可以先看看现有方式能不能满足。
等项目真的需要完整后端框架、自定义运行环境或容器时,再考虑云托管;真的需要复杂关联、SQL 或强事务时,再考虑 PostgreSQL。技术越重,不一定越适合第一版。
正式发布以前,还可以把下面这段话交给 AI:
请检查这个小程序收集的联系方式、问题描述和图片。告诉我哪些必须收集、保存多久,以及用户怎么删除。不必要的数据不要收集。
- 第一张真实工单已经跑通了
现在用账号 A 提交一张工单,能在数据库里找到它;换成账号 B,又看不到账号 A 的记录。做到这一步,页面、云函数、微信身份、数据库和权限才算真正接在了一起。
以后换成预约、会员、课程或报修小程序,也可以从这样一条很小的真实记录开始。先让页面能操作,再一次只接一个后端能力,每次同时看前台结果和云端记录,确认以后再上传体验版。
功能会变,底线不会变:密钥不要放在前端,用户是谁不能听前端自己说,关键数据要经过后端检查并留下记录。
参考资料
上一节:如何构建一个最简单的微信小程序
CloudBase 快速开始
创建 CloudBase 云开发环境
CloudBase AI Toolkit
CloudBase AI 一键插件
Trae 接入 CloudBase 官方指南
CloudBase Skills 使用指南
微信小程序 Skill 当前推荐方式
微信小程序调用 CloudBase 云函数
CloudBase 数据库安全规则
CloudBase 云函数安全规则
CloudBase 数据库事务
CloudBase 云存储安全规则
CloudBase 环境模式选型
CloudBase AnyService
CloudBase HTTP 网关
CloudBase 云函数类型选型
CloudBase UniApp 接入
CloudBase 内容审核
CloudBase 日志检索
CloudBase 密钥与环境变量管理
CloudBase 2026 更新日志