跳到正文

零成本手搓一套“在线考试系统”:从单文件纯前端到企业级开源架构解密

编辑此页

最近公司内部有一份《装配工艺标准》的培训 PDF,需要组织员工进行考试摸底。如果去买现成的考试系统或者用问卷平台,不仅有些大材小用,而且 UI 也很难深度定制。

于是我萌生了一个想法:能不能完全借助 AI,零成本手搓一个纯前端的“单网页在线考试系统”?

在不断调优和深挖的过程中,我不仅搞定了一个极简的考试页面,还顺藤摸瓜研究了“问卷星”、“腾讯问卷”背后的底层架构。今天就把这套折腾的过程和干货分享给大家。


一、 极简主义:一个 HTML 文件搞定一场考试

一开始,我想象的在线考试系统必须得有“前端 + 数据库 + 后台 Java/Node.js”。但实际上,如果只是一场小型的内部培训测验,一个纯原生的单 HTML 文件就足够了。

1. 架构思路:纯前端判卷

我将题目数据(单选、多选、正确答案)以 JSON 格式直接“硬编码”写在 JavaScript 里。 用户打开网页后,手机或电脑的 CPU 就成了“阅卷老师”。交卷的瞬间,JS 会在本地比对用户的选择与正确答案数组,并立即渲染出得分、红绿错题高亮和解析反馈。全程 0 延迟,且不需要任何服务器算力。

2. UI 风格的迭代

最初我设计了一个工业风的单题翻页模式,但发现对于正式考试来说过于花哨。最后我把它重构成了**“传统 A4 试卷模式”**:极简白底黑字,所有人一眼就能看懂,一口气从头做到尾再交卷,体验非常丝滑。

🎁 附送:AI 自动生成试卷的高级 Prompt 如果你也想一键生成这种单文件考试页面,不要随便跟 AI 聊,直接用我总结的这套 Prompt 模板(复制这段话发给 AI,把资料扔给它即可):

“你是一个出题专家。请根据我提供的【学习资料】,提取核心知识点,生成一份包含15道题(单选+多选)的在线 HTML 测试卷。要求:单文件纯原生实现、传统A4纸试卷排版、交卷前进行未答题校验、交卷后输入框设为 disabled,并在错题下方显示红色解析,正确选项高亮为绿色。多选判分必须进行数组全等比对…”


二、 进阶难题:没有后台,怎么收集员工成绩?

单网页确实爽,但问题来了:员工做完题,数据一刷新就没了。既然不想写后端代码,又需要记录“姓名、部门、得分”,怎么办?

这里就涉及到了现代前端开发中非常有用的 Serverless(无服务器架构)思想

我的解决方案是:接入 Webhook 或第三方表单接口(如 Formspree)。 在试卷的顶部加上姓名和部门的必填项。在用户点击“交卷”算出总分后,加上下面这段简单的 fetch 代码:

const reportData = {
    "姓名": userName,
    "部门": userDept,
    "得分": score + "分",
    "交卷时间": new Date().toLocaleString()
};

// 发送到钉钉群机器人、飞书机器人或免费表单接口
fetch("https://你的webhook地址", {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(reportData)
}).then(res => console.log("成绩上传成功!"));

这样,员工每次交卷,成绩就会自动推送到部门的钉钉/企业微信群里,或者自动汇总成一份在线 Excel。完美实现了零部署、零服务器费用的数据闭环。


三、 降维打击:我的单网页 vs 腾讯问卷,差距在哪?

做完这个小工具后,我陷入了思考:这种 SPA(单页应用)与市面上成熟的“腾讯问卷”、“问卷星”到底有什么本质区别?

如果把做考卷比作“吃饭”,我的单文件网页是**“自热米饭”(食材和加热包全在本地),而腾讯问卷则是去“大型连锁餐厅”**。

核心架构区别如下:

维度我的单文件考试系统 (Client-side)腾讯问卷类系统 (B/S 后端架构)
判卷大脑前端/本地计算:答案写在JS里,本地 CPU 瞬间判分。后端/云端计算:前端不知答案,用户选项传给服务器后由云端判分。
防作弊机制较弱。懂技术的人按 F12 查看源码就能找到 correct: [2] 提前知道答案。极强。正确答案锁在云端数据库,只要服务器不被黑,绝对安全。
运行抗压能力无限抗压。把 HTML 发在群里,10万人同时做题也不会宕机(因为耗费的是个人的手机算力)。需要强大的服务器集群支撑,大型统考高峰期容易出现服务器卡顿。
适用场景企业内部轻量培训、知识竞答、课后自测练习。正规防作弊考试、需要复杂的统计表盘和后台可视化的场景。

四、 站在巨人的肩膀上:优秀的开源问卷考试系统推荐

虽然单文件能解决轻量级需求,但如果你的公司需要一套完整的“可以拖拽出题、自动判分、拥有题库管理、数据大屏”的系统,千万不要自己从零开发,去开源社区“抄作业”才是王道。

我在调研后,整理了目前行业内最顶级的 4 个开源表单/考试系统,强烈推荐给做开发和架构的朋友们:

  1. 卷王 (SurveyKing) 🏆(强烈推荐) 国产开源之光! 它不仅能做问卷,还内置了极其专业的考试模块和错题本功能。 技术栈:Vue3 + Java (Spring Boot)。中文文档写得极好,尤其是它提供的数据库架构图,非常适合作为学习 B/S 问卷系统的范本。

  2. Tduck (填鸭表单) **UI 体验最接近“腾讯问卷”**的一个项目。它的后台拖拽编辑器(Form Builder)做得非常商业化,适合想在公司内部快速搭建表单收集平台的团队。

  3. Formbricks 全球最火的前沿架构项目。如果你是纯前端/全栈 JavaScript 开发者,一定要看它。采用 Next.js + TailwindCSS + Prisma,代码质量和设计感都是国际一流水准。

  4. SurveyJS 它不是一个完整的系统,而是一个**“纯前端问卷渲染引擎”**。它教你如何把一段 JSON 数据,变成兼容 Vue/React 的完美问卷。学会了它,你就懂得了表单页面的底层渲染逻辑。


写在最后

折腾完,然后让Gemini 写了一下发到这里了。


编辑此页