我以为最难的是写代码,直到把小程序送上线
- 2026-10-28 08:45:51
小程序上线了 · 7 天,和 12 个坑
一款 MOBA 出装速查工具,从立项到上线的完整流水账 —— 以及一份可以照着做的教程。
105 位英雄 · 315 套出装 · 云端 0 台服务器
EDITOR'S NOTE
写在开头这篇不是成功学。它是一个不会写代码的人,带着一个 AI 搭档,把一款小程序从想法推到线上的流水账 —— 哪天做了什么、卡在哪、怎么绕过去。后半部分是教程,可以照着做。
01
PART
上线之夜:8 小时 40 分
LAUNCH NIGHT
10 月 16 日上午 11 点 21 分,我点了后台那个「提交审核」。然后就是等。
晚上 8 点 04 分,手机弹出来一条通知:审核通过。我盯着看了两秒,才反应过来去点下一步 —— 提交发布。20 点 13 分,按钮按下。10 到 30 分钟后,这个小程序就能被搜到了。
11:21:25 / 提交审核
代码上传完、版本描述写完、隐私说明填完、图片预览传完,点下提交。平台页面上写着一行字:「预计在 1-7 天内完成审核」。
20:04 / 审核通过
提交到过审一共 8 小时 40 分,落在「1-7 天」区间的下限附近。全程没有补材料、没有被驳回 —— 这不是运气,是提审前把能查的项都自查了一遍。
20:13 / 提交发布
按钮字面就是这四个字,在「管理 › 版本管理 › 审核版本」卡片右侧,绿底。旁边那个「详情」只是用来看填写内容的,别点错。
顺带说一句:平台明确写了不支持加急,也没有“催审”这个功能。能做只有一件事 —— 提交之前,把该自查的自查完。

🖼
待补素材
小程序首页截图(105 位英雄列表)
02
PART
先定性,再动手
POSITIONING
这个项目从立项到上线一共 7 天。但第一天我没写一行代码。做的全是“定性”:这东西到底是什么、算哪一类、数据从哪儿来。
别小看这一步。同样一份“英雄出装数据”,你怎么定义它,直接决定审核那边是放行还是拒稿。
攻略 · 速查工具
类目走「工具 > 信息查询」
游戏辅助
触碰红线,个人主体必拒
这两者差多远?其实只差“你提供的是查得到的资料,还是替你操作游戏的能力”。前者是工具,后者是外挂。所以从第一天起,全站禁用“辅助 / 外挂 / 脚本 / 代练”这类词,一个都不留。
类目不是一个标签,是产品边界。 它决定了你能做什么功能、能放什么内容、甚至能不能做付费。选错不是改一下就能好的,是整条产品线要重来。
03
PART
105 位英雄:数据不是填出来的
DATA LAYER
一个出装速查工具,最重的不是代码,是数据。105 位英雄,每位 3 套出装,加起来 315 套方案。要是靠手写,光敲字就要好几天。
更要命的是,照着现成攻略抄一遍,等于复述别人的东西,版权和合规都不干净。所以换个思路:基础信息手工整理,出装交给规则引擎算。
PIPELINE
从 105 条基础信息,到 315 套出装的数据流水线
全链路零外部数据:从英雄总表进,到用户打开小程序看到的第一屏出,中间没有任何一次联网抓取。
引擎的判断方式很关键:它不认识“某件具体装备”,只认识能力标签 —— 这件装能提供多少护甲、多少穿透、能不能减疗,全是从属性推出来的。
所以在代码里,你找不到一行「看到破军就选破军」。 buildAdvisor.js 里没有装备 ID,只有能力和规则。
好处是,明天往库里加一件新装备,规则立刻就能用上它,代码一个字不用改。反过来,库里缺某类装备,引擎会老实报“缺口”,而不是硬凑一套出来骗人。
对外口径也守得很死:生成出来的方案,标题一律带「系统推荐」,注明“由规则引擎自动生成,仅作起步参考”。不许说“高分段方案”“胜率最高” —— 数据全是自建的,没有对局统计,就不能装成有。
04
PART
技术选型:能少折腾就少折腾
STACK
技术栈选了最朴素的一套:微信原生小程序 + 云开发。没有框架、没有构建工具、没有服务器。
理由很实际:一个人做,最贵的是“运维注意力”。多一台服务器,就多一份要盯的东西。
最后落地的规模是这样:13 个云函数、12 个集合、9 条索引,前端 3 个主包页面 + 2 个分包。
有个设计我自己挺满意:数据带版本号。后台改数据、切版本,用户下次打开小程序就是最新的 —— 全程不用重新发版,也不用再去惊动一次审核。
05
PART
上线前的三道关
GATES
代码写完只是“做完了”,离“能上线”还有三道关,而且只有这三道全过了,审核那一步才会顺。
这一步最不占工作量,但最费时间 —— 官方给的时间是 1 到 2 周,而且必须在提审前完成。它不占用你写代码的时间,所以正确做法是:开项目第一天就去提交。
有一个坑值得提前知道:地址栏别写“××经济开发区”这类字样,很容易被驳回重填,一来一回又是一周。按身份证地址老老实实写。
这一关最容易翻车,因为它有两种方向的错:声明了没真正调用的接口(多余),或者调用了却没声明(要命)。
规规矩矩的做法是:声明只覆盖真正调用过的接口。这个项目里只用了两个 —— 一个是setClipboardData(复制铭文串),一个是选图片。那就只声明这两项,不贪多。
注意
未上线的小程序,隐私指引的入口在提审页的信息填写区,不在「设置」里;而且提审时有一栏「采集用户隐私」必须勾上。上线之后,入口才会挪到设置页去。
类目要选对,版本描述要写清,图片预览要放真实的界面截图。还有一个容易被忽略的点:提审页没有备注框,如果你有什么想跟审核解释的,只能写进“版本描述”里,而且限 200 字。
这三关都过完,再点提交。8 小时 40 分后收到的,才是一条干净的通知。
06
PART
我踩过的坑
PITFALLS
这部分是这篇文章里最值钱的内容。下面每一条都真踩过,而且都不是“报错了你才知道”的那种。
01 / AppID 填错,会覆盖别人的小程序
一个 AppID 只属于一个小程序。你手上如果有好几个,千万别顺手复制粘贴 —— 点「上传」的那一刻,会静默覆盖那个小程序的开发版,不报错、不提示、你也不会发现。上传前先对一眼配置文件里的 AppID。
02 / 最难查的 bug:0 条数据,还不报错
云数据库里有 105 条数据,首页却一位英雄都不显示,而且没有任何报错。原因是数据层拿到空结果时只返回空数组、不抛异常,所以“兜底”逻辑根本没被触发。查了半天才定位到是集合权限配错。教训:判断数据对不对,只能数条数,不能靠“页面没报错”。
03 / 隐私声明在开发版上不生效
做剪贴板功能时,我在开发版里点了半天,一切正常。以为没事了 —— 但正式版的拦截链和开发版不一样,声明没配好,用户那边就是一个错误码 112。结论:涉及隐私接口的功能,只能在正式版上验,而且必须先发布上线 —— 这是它唯一的验证时机。
04 / 加载提示和成功提示会打架
转圈提示和弹出提示共用同一层。你先弹了“成功”,后面那个“加载中”就会把它盖掉,用户看到的是一句莫名其妙的加载中。顺序必须是先关加载、再弹提示。
05 / 免费环境有 15 天倒计时
云开发的免费环境,小程序发布上线后到期时间会变成“上线后第 15 天”,不转付费就销毁,数据找不回来。所以它有一个必须记住的时点:上线当天买套餐,别提前 —— 有效期是按购买日重算的,早买等于白烧一个月。
06 / 买了套餐,倒计时没有消失
这是我差点被自己骗到的一条。买完套餐会有种“安全了”的错觉,但免费环境那条红线只是换了个日期 —— 套餐自己不续费,到期照样释放资源、数据不可恢复。而且“已购买”这三个字最容易让人松劲,所以到期日一定要写下来。
07 / 清缓存不是“万能重启”
排查数据问题时我想当然地认为“清一次缓存就干净了”。实际上空结果从来不进缓存 —— 这本来是件好事(避免把一次失败固化 30 天),但反过来也说明:能不能查到数据,和缓存无关,别用它当判据。
08 / 索引列表里那个多出来的,不用删
云数据库的索引列表里会多出一条你没建过的索引,看着像“建错了”。那是平台默认生成的,跟你配的权限没关系,留着也没有副作用。别为了“干净”把它删掉,反而可能踩到别的坑。
09 / 那个绿色按钮不叫「发布」
过审之后,后台按钮上的字是「提交发布」,四个字,一个字都不能少。如果你按“发布”这两个字去找,会找不到。它就在「版本管理 › 审核版本」卡片右侧,绿底。
10 / 「提交时间」和「状态时间」是两回事
上线之后我随手看了眼前面的记录,发现写着“已发布(9 小时前)”—— 可发布明明就在两分钟前。原因是那个时间是从提交审核那一刻算起的。同样一件“时间”,描述的是完全不同的两件事。
11 / 测试“没变红”,先怀疑测试本身
我习惯用“故意改坏一处、看检查会不会报警”来证明检查有效。有几次改了却没反应,第一反应是“检查很稳”。其实是我改的那个地方渲染结果完全一样 —— 等于什么都没改。不报警的时候,先问一句:我刚才真的改变了什么吗?
12 / 要到处出现的数字,只能有一个来源
同一件事的数字如果在好几个地方各写一遍,早晚会有一处忘了改。我就在这上面栽过:索引明明已经建完,页面上还在提示“记得去补索引”,两个地方自相矛盾。后来把判断收成一个统一的口径,所有地方都读它,这类问题就再也不出现了。
07
PART
手把手:做一个自己的小程序
TUTORIAL
下面这九步,是这次走下来的完整路径。顺序很重要 —— 尤其是第二步要提前,因为它最慢。
去微信公众平台,用一个全新邮箱注册(同一邮箱只能注册一个)。个人主体要做认证,大约 30 元一年。注册完立刻去看一眼「推广 › 流量主」那个按钮亮没亮。
提示
个人主体最多注册 5 个小程序(按身份证、微信号、手机号各有上限)。如果你已经有几个了,先查清楚余量,别做到一半发现额度不够。
在公众平台按引导提交,等 1 到 2 周。这一步不占用你写代码的时间,所以完全可以和开发并行 —— 你写你的代码,它在后台慢慢审。等你要提审了,它正好过。
下载「微信开发者工具」,新建项目时选「小程序 · 云开发」模板,填上刚注册的 AppID。
建完第一个动作是核对 AppID:打开配置文件看一眼,和你注册的那个是不是同一个。这一步花 5 秒,能省掉后面最难查的一类事故。
在开发者工具里点开云开发控制台,创建环境,把环境 ID 填进代码的初始化里。免费额度对个人开发完全够用,上线前不用花一分钱。
这是整个教程里最容易配错的一步。原则只有一句:谁能读、谁能写,按数据本身的性质分,不按“方便”分。
面向所有人展示的数据(比如英雄资料),设成公开只读,让客户端直接查,快而且省调用;用户自己的数据(收藏、反馈),设成只有本人可读写;纯后台用的数据,直接完全禁止客户端访问。
配完一定要真的去数一下条数 —— 权限配错时,界面不会报错,只会安安静静地显示 0 条。这就是上面第 2 个坑。
先用最小的页面把主链路跑通:列表 → 详情 → 切换版本。跑通了,再加功能。这个项目第一版也只做了这三页。
页面一多就分包:主包只放首屏要用的,其余塞进分包,能把启动时的下载量压下去。这是体感最明显的一个优化。
这一类项目最值钱的动作,其实是“提交之前”做的事。逐项对一遍:类目对不对、隐私声明有没有覆盖真调过的接口、有没有敏感词、有没有忘记写的免责声明。
我的习惯是把它做成一张可以逐条打勾的清单,每勾一条就当场验一条 —— 不是“我觉得应该没问题”,而是“我刚亲手验过”。这次 8 小时 40 分过审、零补材料,靠的就是这个。
上传代码 → 填版本描述和隐私说明 → 传 3 到 4 张真实界面截图 → 点提交。然后关掉后台,去做点别的。平台写着 1 到 7 天,不支持加急,盯也盯不出来。
收到过审通知后,去「版本管理 › 审核版本」点那个绿色按钮,10 到 30 分钟正式上线。同一天把云开发的付费套餐买掉 —— 别提前,也别拖到第 15 天。
九步里,只有第 6 步在写代码。 其余八步都是“决定”和“核对”。这也是为什么我说,写代码是这件事里最简单的一部分。
08
PART
最后,三句实话
CLOSING
///
END
门槛不在技术,在耐心
三句实话
第一句:做小程序真正的门槛不是写代码,是耐心。备案要等,审核要等,很多东西没有捷径也没有加急。能不能把“等”这段时间用来做别的,基本决定了一个人能不能把项目推到线上。
第二句:别把“没报错”当成“没问题”。这次最费时间的几个坑,全是不报错的那种 —— 0 条数据、按钮找不到、声明不生效。真正的功夫,是给这些“安静的错误”提前准备判据。
第三句:上线不是终点,是第一天。线上一分钟,问题就会以你想不到的方式冒出来。所以我把还没做完的几件事也留在这儿:中低端安卓机还没实机走查,讨论区还没开,装备库还能再扩。
把该查的查完,剩下的交给时间。
本期结论
一款 105 位英雄的出装速查工具,7 天从立项走到上线,8 小时 40 分过审。
冲 UV,把日活做到 3000 —— 广告位优化是放大器,不是发动机。
COMMON QUESTIONS
01 / 不会写代码,能做小程序吗?
02 / 一定要买服务器吗?
03 / 审核被驳回怎么办?
04 / 从零到上线,一共花了多少钱?
01 / 不会写代码,能做小程序吗? 能做。这次全程是一个不会写代码的人加一个 AI 搭档完成的。但要接受一点:不做代码,不等于不用做判断 —— 类目、权限、合规这些“决定”,AI 替不了你拍板。
02 / 一定要买服务器吗? 不一定。云开发这类方案可以让你一台服务器都不买,代价是长期成本按量走。小体量工具前期基本就是一杯奶茶钱一个月。
03 / 审核被驳回怎么办? 先看驳回理由属于哪一类,改完重新提交就行,不影响其他。真正要避免的是“因为没自查而被驳回”,那种最浪费时间。
04 / 从零到上线,一共花了多少钱? 认证费约 30 元一年,加上上线后的云开发套餐 ¥19.9 一个月。素材自绘,没有外包。加起来不到两位数。
我是王老灯,一个在 D 盘上折腾各种小项目的人。这里记录它们从想法到落地的过程,包括翻车的部分