「破境刷题」后端基于 Node.js + Express,对接小程序全部 API,并托管 PC 机考静态页。 本文分享题库类项目后端的模块组织方式。
项目结构
src/
index.js # 入口,挂载路由与静态资源
routes/
index.js # 小程序 API
admin.js # 管理后台 API
db/
repositories/ # 按表/业务拆分的数据访问层
services/ # 微信、机考二维码等外部服务
public/
computer-exam/ # PC 机考前端
路由层只做参数校验与响应格式化,SQL 与业务逻辑下沉到 repository, 避免单个文件膨胀到数千行难以维护。
核心业务模块
用户与授权
微信登录换取 openid,token 存 Redis。激活码兑换延长科目有效期,
首页与答题接口均校验 isExpired 状态。
刷题与计次
章节练习、模考、真题共用题目表,通过 section / paper 关联组织。 答题记录写入 practice 流水,异步重算刷题计数,支持排行榜与战绩分享。
笔记与纠错
用户可在答题页写笔记、提交题目纠错。管理后台审核优质笔记后自动延长授权, 形成「学习 → 分享 → 激励」闭环。
静态资源与机考
Express 将 /computer-exam/ 映射到 public 目录,与 API 同域部署,
避免跨域问题。Nginx 反向代理时可统一走 /api2/ 前缀。
部署建议
- MySQL 存业务数据,Redis 存 session 与二维码会话
- 题目图片放
static/目录,CDN 或 Nginx 直接托管 - 管理后台与 API 同进程,生产环境建议加 HTTPS 与访问限流
小结
题库类后端的关键是「数据模型清晰 + 仓储分层 + 授权贯穿全链路」。 个人开发者可先跑通主流程,再按模块逐步拆分,不必一开始就过度设计。