基于 Grid 布局的课程表生成系统开发实录:从静态页面到全栈应用

494 阅读3分钟

一、项目效果展示

image.png

image.png

image.png 基于 CSS Grid 的响应式课程表,支持数据动态渲染与统计功能

二、项目背景

在职业教育课程体系设计中,课程表的可视化展示是教学计划落地的重要环节。传统 Excel 表格难以直观呈现课程分布与课时结构,而市面上的排课工具往往缺乏灵活性。因此,我们基于 Web 技术开发了一个轻量化课程表生成系统,实现课程数据的结构化展示与动态统计,满足院校专业建设中课程规划的可视化需求。

三、目标功能

  1. 数据驱动的表格渲染:通过 JSON 数据动态生成课程表,支持学分、学时的自动统计
  2. 响应式布局:基于 CSS Grid 实现多列自适应,解决传统表格横向滚动问题
  3. 多级表头设计:支持跨列合并,清晰展示课程类别、课时分配等层级信息
  4. 全栈数据管理:通过 Node.js+Express 搭建 API 接口,实现 MongoDB 数据库的增删改查

四、第一步:搭建静态 HTML 页面

技术选型

  • 布局方案:CSS Grid(grid-template-columns: repeat(18, minmax(120px, auto))

  • 组件设计

    • 表头使用grid-column-span实现跨列合并
    • 课时分配栏嵌入子网格(display: grid; grid-template-columns: 1fr 1fr;
  • 关键 CSS

image.png

静态页面结构

image.png

五、第二步:AI 辅助动态渲染逻辑

数据结构设计

通过 Trae 辅助设计 JSON 数据模型,包含课程基础信息与学期分布数组:

image.png

动态渲染实现

使用原生 JavaScript 遍历数据并生成 DOM 节点,关键代码:

image.png

六、第三步:全栈功能扩展

1. 搭建 Node.js API 服务

使用 Express 框架创建数据接口,支持跨域请求:

image.png

2. 集成 MongoDB 数据库

通过createDB.js脚本初始化数据库,实现数据持久化:

image.png

3. 前端数据请求

使用 Fetch API 获取远程数据,实现前后端分离:

image.png

七、值得记录的技术要点

1. CSS Grid 的跨列合并技巧

  • 表头跨列:grid-column: span 2;
  • 数据行合并:通过空单元格占位实现视觉合并(如 “课程类别” 列仅首行显示)

2. 大数据量渲染优化

  • 使用requestAnimationFrame拆分渲染任务

3. 全栈开发流程优化

  • 通过json-server快速 mock API(开发阶段替代 Node.js 服务)
  • 使用 ES6 模块管理代码依赖,避免全局变量污染

八、未来优化方向

  1. 可视化交互:添加课程卡片悬停提示,显示完整备注信息
  2. 数据导出:支持 Excel/PDF 导出,集成xlsxjsPDF
  3. 移动端适配:引入媒体查询,实现表格折叠与手势滑动

总结

该项目通过 CSS Grid 实现了复杂表格的响应式布局,结合 Node.js 与 MongoDB 构建了完整的全栈链路。在开发过程中,AI 工具在数据模型设计、代码优化等环节提供了有效辅助,显著提升了开发效率。未来可进一步拓展为院校专属的排课管理系统,集成智能排课、进度跟踪等功能,为职业教育数字化转型提供技术支撑。