课表是怎么做的
455 字
2 分钟
课表是怎么做的

起因
这学期课表比较复杂,周一到周五每天十几节课,还有晚自习,周五下午单双周还轮着上不同科目。手动记容易出错,于是想着能不能把这个课表挂到博客上,随时随地就能查。
数据结构
课表的核心是 src/data/timetable.ts,两个数组:
periods:作息时间,定义每一大节的起止时间和标签courses:课程列表,每条记录包含课程名、星期几、第几大节、上课周次规则、地点、教师
周次规则通过 weeks 字段控制,支持三种模式:
{ start: 1, end: 21 }— 全部周次{ start: 1, end: 21, parity: "odd" }— 单周{ start: 1, end: 21, parity: "even" }— 双周
这周五下午就是靠 parity 实现的:单周第一节化学,双周第一节体育,其余课程不变。
排课过程
按时间表逐天录入,day: 1-5 对应周一到周五,slot 对应 periods 的下标。13 个时段分别是:
| 早读1 | 早读2 | 上午1-4 | 中午1-2 | 下午1-4 | 晚自习 |
|---|---|---|---|---|---|
| 07:00-07<25>25> | 07:25-07<50>50> | 08:00-11<41>41> | 12:00-13<30>30> | 13:40-17<20>20> | 17:45-20<30>30> |
周二到周五的课程顺序和周一不同,逐一核对后填入对应 slot。地点和教师目前留空,后续补上。
学期信息
semester 配置了学期的基本信息,startDate 设成 2026-09-01,totalWeeks 设为 21 周。组件会根据当前日期和开学第一天自动计算现在是第几周,高亮当前周的课程。
效果预览
课表页面在 /timetable 路由下,桌面端是表格形式展示,手机端切换为按天列表。课程卡片会自动分配颜色,不同科目不同颜色,一眼就能分辨。
后续
- 补上教室和教师信息
- 如果以后有科目调整,直接改
timetable.ts即可,不需要动代码
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
把 Aemeath 的站点统计页移植到 Firefly
博客搭建记录把 Aemeath 主题的公开站点统计页 /analytics 移植到 Firefly 博客主题的过程:Umami 公开分享接口、Waline 最新评论、GitHub 推送热力图与侧栏统计快照组件的适配记录。
2
随机封面修复记:同一篇文章,列表和详情页竟然两张图
blog博客列表页和文章详情页的随机封面每次都不一样,排查后发现是图床 /random 接口不支持种子参数。记录用"构建期固定封面"彻底解决这个问题的过程。
3
记一次博客收录优化:从 1 个页面到全部可收录
blog分享为博客排查 Google/Bing 收录问题的全过程:canonical 缺失、重复页面判定、meta description 雷同,以及 IndexNow 接入时踩过的各种坑。
4
为 Firefly 添加 Umami 访问统计卡片
blog在 Firefly 博客侧边栏集成 Umami 访问统计,实时展示浏览量、访问数和游客数
5
GitHub Actions 自动构建并部署 Cloudflare Workers 实现思路
blog讲解如何用 GitHub Actions 实现推送代码后自动构建 Astro 项目,将产物推送到 build 分支,并部署到 Cloudflare Workers
随机文章随机推荐



