|
|
1 ماه پیش | |
|---|---|---|
| .openai | 1 ماه پیش | |
| app | 1 ماه پیش | |
| components | 1 ماه پیش | |
| examples | 1 ماه پیش | |
| hooks | 1 ماه پیش | |
| lib | 1 ماه پیش | |
| public | 1 ماه پیش | |
| .gitignore | 1 ماه پیش | |
| .oxfmtrc.json | 1 ماه پیش | |
| .oxlintrc.json | 1 ماه پیش | |
| README.md | 1 ماه پیش | |
| components.json | 1 ماه پیش | |
| next.config.ts | 1 ماه پیش | |
| package-lock.json | 1 ماه پیش | |
| package.json | 1 ماه پیش | |
| tsconfig.json | 1 ماه پیش | |
| vite.config.ts | 1 ماه پیش |
单页课程教材。8 个模块保留独立入口,目前只完成 API 服务开发的 16 节课件。其他模块不包含预先编写的教学内容。
项目依赖 Node.js 22.13 或更新版本。第一次运行:
npm install
npm run dev
打开终端显示的地址(通常为 http://localhost:3000)。顶部「授课视图」会收起目录并放大正文和代码,适合录屏;再次点击退出。课时链接使用 ?lesson=01 到 ?lesson=16,可以直接定位,浏览器前进和后退可用。交互图解是浏览器内的状态模拟,真实后端需单独运行配套项目。
app/lessons.json:16 节结构化课件。每节包括目标、概念、实战步骤、验收、排错、练习和技术文档链接。app/course.tsx:模块目录、课件展示、视频位置、授课视图。app/demos.tsx:HTTP 请求处理、协议消息序列、异步 I/O 时间线三个教学演示。app/globals.css:版式、移动端与录屏样式。app/videos.json:课时编号到视频的映射,默认留空。视频尚未录制。examples/:可运行的 FastAPI 参考项目源代码。完整项目覆盖课程的主线端点,课堂代码包含需自行加入的演进步骤和扩展实验。public/downloads/api-lab.zip:学员下载包。解压后的入口为 api-lab/main.py,按包内 README 启动。修改课时标题、时长或正文后,目录会从课程数据自动生成。阶段分组目前对应 01–04、05–08、09–10、11–16;如增删课时,需要同时调整 course.tsx 内的 phases。
录制完成后,编辑 app/videos.json。键为两位课时编号;type: "file" 使用网页内播放器(浏览器支持的 MP4/WebM 文件),type: "link" 打开已有视频平台地址。
{
"01": { "type": "file", "url": "/videos/01.mp4" },
"02": {
"type": "link",
"url": "https://你的课程平台/实际视频地址",
"title": "读懂一次 HTTP 请求"
}
}
本地视频放在 public/videos/;大视频建议使用可直接访问的 HTTPS 媒体地址。示例里的平台地址须换成真实地址。没有配置的课时显示「视频待录制」,不会生成假的播放入口。本页不上传或转码视频,也不绕过视频平台的访问限制。
进入 examples,按该目录的 README 创建 Python 虚拟环境、安装依赖并运行 FastAPI。课件网页与 Python API 是独立进程;网页上线不代表 Python 示例接口同时上线。
npm exec tsc -- --noEmit
npm run build
示例项目含 30 项 pytest 测试,版本和真实网络验证结果见 examples/VERIFICATION.md。课件使用 Python 3.11+ / Pydantic 2,下载包锁定已测试版本。课程源码片段用于逐节演进,不应不加区分地全部追加到参考项目中。
更新 examples 后,重新生成 public/downloads/api-lab.zip,只收录示例源码、依赖、说明和客户端,不包含虚拟环境、缓存或本地密钥。ZIP 内保留 api-lab/ 顶层目录。
网站的私有发布信息保存在 .openai/hosting.json。学生访问权限需要在正式发放教材前按实际授课范围设置。