手把手教你开发考试小程序,从零到上线全流程
发布时间:10-21来源:微信小程序工具|微信小程序开发|微信小程序制作平台-龙图应用【XcxIP.com】
说实话,考试类小程序这几年火得不行。学校月考、驾校科目一、公司入职考核、培训机构结业测验,全都想搬到微信里做。原因也简单——学生不用下载APP,老师不用手动批卷,成绩自动出来,还带错题分析。我接过好几个这样的单子,甲方需求五花八门,但核心逻辑就那么一套。今天不聊虚的,直接把我做过的一个真实项目拆开,从注册账号到代码上线,每一步怎么走,踩过哪些坑,全给你摆出来。

先解决最基础的问题:你得有个小程序账号。别嫌麻烦,这一步卡住过不少人。打开微信公众平台,选“小程序”注册,注意这里有个坑——邮箱不能跟公众号、个人微信绑定过,否则会报错。注册类型选“企业”还是“个人”,直接决定你能不能用支付和获取用户手机号。个人主体便宜,但类目审核限制多,考试类小程序基本过不了;企业主体要300块认证费,但功能全开。我建议直接上企业,哪怕你自己是个人开发者,找个朋友公司挂靠也行,不然后面改主体麻烦死。
账号搞定,接下来是开发工具。微信官方那个“微信开发者工具”必须装,别用其他编辑器硬写,调试和预览都靠它。安装完打开,你会看到三个选项:小程序、小游戏、代码片段。选小程序,然后填入AppID(就在你刚注册的账号后台“开发管理”里)。这里说个经验:项目目录别用中文名,也别放C盘,否则编译的时候各种报错,烦到你想砸电脑。建议新建一个空白目录,用官方模板初始化,虽然模板代码看着啰嗦,但至少能跑通,后面再慢慢删。
现在进入正题:考试小程序的页面结构。别急着写代码,先画个流程图。我一般分成四个页面:考试列表页、答题页、成绩页、错题本。列表页展示所有试卷,答题页核心是题目渲染和倒计时,成绩页显示分数和排名,错题本记录做错的题。每个页面就是一个小程序“页面”,由wxml(结构)、wxss(样式)、js(逻辑)、json(配置)四个文件组成。新手容易犯的错是:把所有逻辑塞在一个页面里,结果代码膨胀到两千行,改个样式都要翻半天。我的习惯是每个功能独立成组件,比如倒计时组件、单选组件、多选组件,这样后期加题型也方便。
重点说答题页的逻辑,这是整个小程序最烧脑的部分。假设你有100道题,不可能一次性全部渲染出来,微信渲染层扛不住,用户滑动也卡。正确做法是分页加载:每次只显示一题,或者一屏放三题。我用的是“一题一页”,底部放“上一题”“下一题”“交卷”三个按钮。这里有个交互细节——用户选完答案后,按钮要立刻变色,同时把答案存到全局变量或者缓存里。判断题和单选题好办,多选题要记住选中集合,漏选、多选都要有提示。还有倒计时,考试时间到了要自动交卷,这个用setInterval实现,但注意在小程序后台运行时会暂停,所以最好用服务端时间校验,别只靠本地计时。
题库怎么放?这是个关键决策。我见过有人把1000道题直接写死在代码里,结果代码包超过2MB,根本传不上微信。正确姿势有三种:第一种,题库放后端服务器,小程序通过wx.request接口拉取,适合题目经常变的场景;第二种,用云开发,微信自带云数据库,不用自己买服务器,适合个人开发者;第三种,把题库拆成多个JSON文件,按科目分类,用分包加载。我强烈推荐第二种——云开发,因为免备案、免运维,而且有免费的额度,个人项目完全够用。你只需要在云开发控制台建一个集合,把题目以JSON格式导入,然后在代码里调用数据库API查询就行。
写完前端逻辑,你以为就完了?太天真了。考试小程序最容易被忽略的是“防作弊”。微信小程序没法完全控制用户切屏,但你可以做两件事:一是监听onHide事件,用户切出去就记录一次,超过三次自动交卷;二是打乱题目顺序和选项顺序,每个考生拿到的题目顺序都不一样。我做过一个驾校项目,甲方非要加人脸识别,后来发现小程序的人脸识别接口要企业认证加额外申请,费用还不低,用“答题中途随机拍照”替代了——答题超过30秒就弹窗拍一张照,存到后台,事后人工抽查。这招便宜又实用。
接下来是上线审核,这块水最深。你写好的代码,要在开发者工具里点“上传”,然后去公众平台提交审核。第一次审核大概率被拒,我总结了几条高频驳回理由:类目不符(要选“教育-考试”类目,需要提供相关资质)、没有隐私政策(尤其是涉及收集用户答题数据)、没有用户协议(底部必须有“用户协议”和“隐私政策”的入口链接)。还有个小技巧:审核期间别用“测试”这种标题,版本描述里写清楚“本版本为正式上线版本,包含完整考试功能”,审核员看着省心,过审速度会快很多。
等审核通过,你以为就万事大吉了?上线只是开始。我那个驾校项目上线的第一个月,后台日志里全是报错——安卓老机型兼容性差,iPhone刘海屏适配有问题,还有人在答题中途直接卡死。你需要在开发者工具里打开“真机调试”,找几台不同型号的手机挨个测。另外,一定一定一定(重要的事说三遍)要做好数据统计。微信后台自带访问分析,但考试数据你得自己埋点——比如每道题的正确率、平均答题时长、交卷放弃率,这些数据能帮你调整题库难度。我后来给代码里加了个简单的上报接口,每次交卷后把答题明细发到云数据库,再用云函数跑个统计,成本几乎为零,但客户看到数据报告,续费特别爽快。
说点掏心窝子的。开发考试小程序,技术难度真不高,难的是对考试业务的理解。你得分清“模拟练习”和“正式考试”是两种完全不同的场景:练习模式可以随时看答案、做错了有解析;正式考试必须锁死答案,交卷前不能返回修改。很多新手把这两种模式混在一起,做完被客户骂得狗血淋头。我的建议是,动手写代码之前,先花一周去问五个真正的老师或者考生,他们到底需要什么功能——是想要防切屏,还是想要成绩排名?是想要随机抽题,还是想要固定顺序?搞清楚这些,你写出来的小程序才有人用,否则技术再炫,也是个没人点的摆设。从零到上线,其实就这七步:注册账号、搭环境、画页面、写逻辑、存题库、过审核、上数据监控。每一步都有坑,但每一步都不算难。你只要耐着性子走完一遍,第二个考试小程序,基本上就是复制粘贴加改改样式的事儿了。
