Skip to content

57Darling02/BjtuCoursePlatform

Repository files navigation

北交大课程平台青春版

Vue3 TypeScript

一个基于官方接口重构的课程平台,适配移动设备和提供更符合学生需求的功能放置。 功能概览: 自动登录、课件下载、课件快速预览、成绩排名、优秀作业参考、增强作业查看、作业文件预览、文件提交、课表查询等常用功能的体验。

国内访问:(建议ipv6访问) course.bjtu.top

感谢好朋友 上条当咩 提供的子域名和服务器。

http入口

起源

BJTU课程平台SE起源 | 57Darling02's Blog

🌟核心功能介绍

  • 自动登入

    • AES-256-CBC加密存储凭证在用户本地
    • 打开网页,会话自动重连。
  • 基础课件功能增强

    • 继承课件预览、下载功能。
    • 提供课件便捷切换、快速搜索功能(原平台每次切换课件都要重新获取一次完整的课件列表,实在不理解。)
    • 提供pdfjs高版本特性,如大纲和画笔。
    • f1563e36478b540b6a5076e1d7a742c
  • 待办列表:

    • 方便的查看和提交待完成的任务
    • 截止倒计时(感受到紧迫感了吗)
  • 作业参考

    • 自动取出前五的作业,方便大家学习、对比、找差距🤔
  • 每日课表

    • 剩余课程上课下课倒计时
  • 跳转直通原平台

  • 批改反馈:

    • 修复评语和分数展示
    • 成绩排名:老师批改后,根据分数排位 (妈妈再也不怕我卷不起来了😤)
  • 基础作业功能增强

    • 继承作业查看,预览和提交功能,增强:新增拖动上传,多文件一起上传(再也不想一个个点了)
    • 新增删除已提交作业功能(人机兄弟交错作业后发现不能重复提交,顺手新增这个功能)
  • 📱 全端适配

    • 支持PC/平板/手机移动设备(普通设备比例应该没问题)
  • autoprefixer补全各内核浏览器的CSS前缀

  • 界面美化:使用统一圆角,不失优雅。

img

🚄 性能优化

因为推荐高频率打开网站看看,而且移动端设备普遍性能偏低,因此网站做了许多性能优化工作。

  • 网络请求优化:并发请求池(限制3并发请求,太高并发别把学校服务器搞炸了😐)

  • ⚡ 异步任务优化:异步任务队列,实现有序懒加载,用于延迟网络请求,均衡时间上的负载。

  • 🖥️ 渲染优化

    • 骨架屏延迟复杂DOM渲染,避免动画和网络请求资源竞争。
  • 缓存优化

    • 优先展示缓存的数据,后台异步更新数据。因此只有初次登入等待时间偏长。
    • 当日课表,一日一更。
    • 用户信息,每次请求都会更新(鉴权)
    • 作业信息拆分为概要信息和详细信息
      • 概要信息优先更新,包括公开的作业标题、内容和是否完成等等重要信息。
      • 详细信息延迟更新,批改情况,如排名和评语等等。
      • 个人和公开的作业具体内容(主要是附件)不会缓存。

注意:每次打开都会尝试更新数据,但由于是懒更新,因此会先展示缓存的数据,出现“数据更新完成”提示后才是最新的数据。

🚀 部署

  由于本人家境贫寒,没有服务器可用,因此临时利用妈妈的旧手机(HUAWEI 畅想10),使用nginx反向代理到校园局域网。 注意:为避免接口滥用,上传的项目中原先屏蔽了平台接口的调用方式。但是因为平台认为有获取用户隐私风险,现已开放全部代码(六子真的只吃了一碗粉😓)

常见问题处理

  • 🔄 服务状态检查

    1. 打开侧边栏,自动进行服务状态检查
    2. 持续重连失败需手动退出重新登录
  • 🔑 密码同步问题: 使用统一认证登入时无法调用app接口,解决方案(任选其一):

    1. 课程平台的密码与认证密码同步(侧边栏提供操作接口)
    2. 使用课程平台账号密码登入

验证与缓存路径

graph LR
  C -->|Nginx代理| A[网页端接口]
  C -->|Nginx代理| B[轻新课堂APP接口]
  C -->|Nginx代理| D[CAS认证接口]
  E{用户终端} --> C[前端服务]
Loading
%%{init: {'theme': 'neutral', 'themeVariables': { 'primaryColor': '#F6F6F6'}}}%%
graph TD
    A[用户认证] --> B{认证方式}
    B -->|CAS认证| C[调用统一认证接口]
    B -->|平台密码| D[调用原平台接口]
    C --> E[认证结果处理]
    D --> E
    E --> F[进入主页]
    F --> G[作业数据处理]
    G --> H{是否有缓存?}
    H -->|是| I[展示缓存数据]
    H -->|否| J[直接获取新数据]
    I --> K[后台发起数据更新]
    K --> L[更新完成替换最新数据]
    J --> L
    F --> M[课表数据处理]
    M --> N{是否有缓存?}
    N -->|是| O[检查缓存日期]
    N -->|否| P[获取数据并缓存<br/>带时间戳]
    O --> Q{是否当天?}
    Q -->|是| R[使用缓存数据]
    Q -->|否| S[获取新数据更新缓存]
    P --> R
    S --> R
    style A fill:#4CAF50,color:white
    style B fill:#FFC107,color:black
    style G fill:#2196F3,color:white
    style M fill:#9C27B0,color:white
Loading

📜 开源协议

本项目采用 MIT License,请遵守以下条款:

  • 禁止将本项目用于商业用途
  • 引用代码需保留原始版权声明
  • 不得恶意攻击官方服务器

💡 本系统为教学研究项目,开发者不对滥用行为负责

About

一个基于官方接口重构的课程平台,适配移动设备和提供更符合学生需求的功能。点击体验:course.bjtu.top

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors