lab-edu 的前端应用,基于 Next.js(App Router)。
- 提供统一前端页面入口
- 通过可配置的 API 基地址访问后端能力(环境变量驱动)
- 作为容器化部署与 GHCR 镜像发布的前端交付单元
web/
├── app/ # App Router 页面与全局样式
│ ├── login/ # 登录页
│ ├── register/ # 注册页
│ ├── courses/ # 课程列表/详情页
│ └── experiments/ # 实验详情与提交页
├── lib/api/ # 统一 API 调用封装
├── lib/auth/ # 统一登录状态管理
├── middleware.ts # 未登录访问拦截
├── public/ # 静态资源
├── Dockerfile # 生产镜像构建文件
├── .dockerignore # Docker 构建上下文过滤
├── .github/workflows/
│ └── web-image-ghcr.yml # 构建并推送 GHCR 镜像
├── package.json # 依赖与脚本
└── tsconfig.json # TypeScript 配置
npm cinpm run dev默认访问地址:http://localhost:3000
npm run build
npm run startdocker build -t lab-edu-web-test .NEXT_PUBLIC_CORE_BASE_URL:core 服务的基地址(例如http://localhost:8080)- 前端会自动拼接
.../api/v1与.../swagger-ui.html
- 前端业务请求统一通过
lib/api/client.ts发送,默认使用:NEXT_PUBLIC_CORE_BASE_URL - 本地直连 core 可设置:
NEXT_PUBLIC_CORE_BASE_URL=http://localhost:8080 - 请求会自动携带登录状态,用户刷新页面后仍可继续访问已登录内容
- 登录状态失效后,访问课程与实验页面会自动回到登录页
/register为公开页面,支持学生/教师账号创建- 不建议在页面组件里直接写
fetch到后端地址,统一通过lib/api封装