← 返回博客列表

「破境刷题」后端基于 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 与访问限流

小结

题库类后端的关键是「数据模型清晰 + 仓储分层 + 授权贯穿全链路」。 个人开发者可先跑通主流程,再按模块逐步拆分,不必一开始就过度设计。