# AGENTS.md
## 项目概述
这是一个面向初学者教授网页开发基础知识的教育课程仓库。该课程是一门由微软云宣传人员开发的为期12周的综合课程,包含24个涵盖JavaScript、CSS和HTML的实践课程。
### 关键组成部分
- 教学内容:24个结构化课程,按项目模块组织
- 实用项目:生态瓶、打字游戏、浏览器扩展、太空游戏、银行应用、代码编辑器和AI聊天助手
- 互动测验:48个测验,每个包含3个问题(课前/课后评估)
- 多语言支持:通过GitHub Actions自动翻译50多种语言
- 技术栈:HTML、CSS、JavaScript、Vue.js 3、Vite、Node.js、Express、Python(用于AI项目)
### 架构
- 教育仓库,基于课程结构
- 每课文件夹包含README、代码示例和解决方案
- 独立项目位于单独目录(quiz-app、各种课程项目)
- 使用GitHub Actions(co-op-translator)实现翻译系统
- 文档通过Docsify提供,并可导出为PDF
## 设置命令
此仓库主要用于教学内容的使用。若需使用具体项目:
### 主仓库设置
```bash
git clone https://github.com/microsoft/Web-Dev-For-Beginners.git
cd Web-Dev-For-Beginners
```
### 测验应用设置(Vue 3 + Vite)
```bash
cd quiz-app
npm install
npm run dev # 启动开发服务器
npm run build # 构建生产版本
npm run lint # 运行 ESLint
```
### 银行项目 API(Node.js + Express)
```bash
cd 7-bank-project/api
npm install
npm start # 启动 API 服务器
npm run lint # 运行 ESLint
npm run format # 使用 Prettier 格式化
```
### 浏览器扩展项目
```bash
cd 5-browser-extension/solution
npm install
# 遵循浏览器特定的扩展加载说明
```
### 太空游戏项目
```bash
cd 6-space-game/solution
npm install
# 在浏览器中打开 index.html 或使用实时服务器
```
### 聊天项目(Python 后端)
```bash
cd 9-chat-project/solution/backend/python
pip install openai
# 设置 GITHUB_TOKEN 环境变量
python api.py
```
## 开发工作流
### 内容贡献者
1. Fork 仓库到你的GitHub账号
2. **克隆你的 Fork** 到本地
3. 创建新的分支 用于改动
4. 修改课程内容或代码示例
5. 在相关项目目录中测试代码改动
6. 按贡献指南提交拉取请求
### 学习者
1. Fork 或克隆仓库
2. 按顺序进入课程目录
3. 阅读每课的README文件
4. 在 https://ff-quizzes.netlify.app/web/ 完成课前测验
5. 按课程学习代码示例
6. 完成作业和挑战
7. 参加课后测验
### 实时开发
- 文档:在根目录运行 `docsify serve` (端口3000)
- 测验应用:在quiz-app目录运行 `npm run dev`
- 项目:使用VS Code Live Server扩展打开HTML项目
- **API项目**:分别在对应API目录运行 `npm start`
## 测试指南
### 测验应用测试
```bash
cd quiz-app
npm run lint # 检查代码风格问题
npm run build # 验证构建是否成功
```
### 银行API测试
```bash
cd 7-bank-project/api
npm run lint # 检查代码风格问题
node server.js # 验证服务器启动无错误
```
### 测试总体方法
- 这是一个没有完整自动测试的教学仓库
- 手动测试关注点:
- 代码示例无错误运行
- 文档中的链接正常
- 项目构建成功完成
- 示例符合最佳实践
### 提交前检查
- 在含package.json的目录运行 `npm run lint`
- 验证Markdown链接有效
- 在浏览器或Node.js中测试代码示例
- 检查翻译结构是否正确保持
## 代码风格指南
### JavaScript
- 使用现代ES6+语法
- 遵循项目中的标准ESLint配置
- 使用有意义的变量和函数名,便于教学理解
- 添加注释解释概念
- 配置Prettier进行代码格式化
### HTML/CSS
- 语义化的HTML5元素
- 响应式设计原则
- 清晰的类命名规范
- 注释说明CSS技术点
### Python
- 遵循PEP 8规范
- 清晰的教学示例代码
- 适当添加类型提示,便于学习
### Markdown文档
- 明确的标题层级结构
- 代码块标明语言
- 资源链接
- 在`images/`目录下存放截图和图片
- 图片含有Alt文本,方便无障碍访问
### 文件组织
- 课程按顺序编号(1-getting-started-lessons、2-js-basics等)
- 每个项目包含`solution/`,通常还有`start/`或`your-work/`目录
- 图片存放在对应课程的`images/`文件夹
- 翻译文件在`translations/{language-code}/`结构下
## 构建与部署
### 测验应用部署(Azure Static Web Apps)
quiz-app配置为Azure静态网页应用部署:
```bash
cd quiz-app
npm run build # 创建 dist/ 文件夹
# 在 push 到 main 时通过 GitHub Actions 工作流部署
```
Azure静态网页应用配置:
- 应用位置:`/quiz-app`
- 输出位置:`dist`
- 工作流:`.github/workflows/azure-static-web-apps-ashy-river-0debb7803.yml`
### 文档PDF生成
```bash
npm install # 安装 docsify-to-pdf
npm run convert # 从 docs 生成 PDF
```
### Docsify文档
```bash
npm install -g docsify-cli # 全局安装 Docsify
docsify serve # 在 localhost:3000 上启动服务
```
### 项目专属构建
各项目目录可能有自己的构建流程:
- Vue项目:运行`npm run build`生成生产包
- 静态项目:无构建步骤,直接提供文件
## 拉取请求指南
### 标题格式
使用清晰、描述性的标题,说明改动内容:
- `[Quiz-app] 新增第X课测验`
- `[Lesson-3] 修复生态瓶项目拼写错误`
- `[Translation] 为第5课添加西班牙语翻译`
- `[Docs] 更新设置说明`
### 必需检查
提交PR前:
1. 代码质量:
- 在相关项目目录运行 `npm run lint`
- 修复所有lint错误和警告
2. 构建验证:
- 如适用,运行`npm run build`
- 确保无构建错误
3. 链接验证:
- 测试所有Markdown链接
- 确认图片引用正常
4. 内容校对:
- 拼写和语法检查
- 确保代码示例正确且有教学价值
- 翻译准确保持原意
### 贡献要求
- 同意微软CLA(首次PR自动检查)
- 遵守[微软开源行为准则](https://opensource.microsoft.com/codeofconduct/)
- 请参阅[CONTRIBUTING.md](./CONTRIBUTING.md)了解详细指南
- 若相关,请在PR描述中注明issue编号
### 审核流程
- PR由维护者和社区审核
- 优先保证教育清晰度
- 代码示例应遵循当前最佳实践
- 翻译要求准确且文化适应
## 翻译系统
### 自动翻译
- 使用GitHub Actions的co-op-translator工作流
- 自动翻译50多种语言
- 源文件位于主目录
- 翻译文件存放于`translations/{language-code}/`目录
### 手动改进翻译
1. 在`translations/{language-code}/`找到文件
2. 保持结构下做改进
3. 确保代码示例依然可用
4. 测试本地化测验内容
### 翻译元数据
翻译文件包含元数据头:
```markdown
```
## 调试与排错
### 常见问题
测验应用启动失败:
- 检查Node.js版本(建议v14+)
- 删除`node_modules`和`package-lock.json`,重新运行`npm install`
- 检查端口冲突(默认Vite使用5173端口)
**API服务器无法启动**:
- 验证Node.js版本(node >=10)
- 检查端口是否被占用
- 确认所有依赖已安装`npm install`
浏览器扩展无法加载:
- 确认manifest.json格式正确
- 检查浏览器控制台错误
- 按浏览器扩展安装说明操作
**Python聊天项目问题**:
- 确认已安装OpenAI包:`pip install openai`
- 确认GITHUB_TOKEN环境变量已设置
- 检查GitHub模型访问权限
**Docsify未提供文档**:
- 全局安装docsify-cli:`npm install -g docsify-cli`
- 在仓库根目录运行
- 检查`docs/_sidebar.md`是否存在
### 开发环境提示
- HTML项目推荐使用VS Code Live Server扩展
- 安装ESLint和Prettier扩展保持格式一致
- 利用浏览器开发者工具调试JavaScript
- Vue项目安装Vue DevTools浏览器扩展
### 性能考虑
- 多语言翻译文件众多(50+语言)导致完整克隆体积大
- 仅工作内容时可使用浅克隆:`git clone --depth 1`
- 编辑英文内容时排除翻译文件搜索
- 初次运行构建过程较慢(npm install,Vite构建)
## 安全考虑
### 环境变量
- API密钥绝不可提交到仓库
- 使用`.env`文件(已包含在`.gitignore`中)
- 在项目README中注明所需环境变量
### Python项目
- 使用虚拟环境:`python -m venv venv`
- 保持依赖更新
- GitHub令牌应仅授予必要权限
### GitHub模型访问权限
- 访问GitHub模型需要个人访问令牌(PAT)
- 令牌应存为环境变量
- 严禁提交令牌或凭据
## 其他说明
### 目标受众
- 完全的网页开发初学者
- 学生和自学者
- 教室中使用该课程的教师
- 内容设计注重无障碍和渐进技能培养
### 教学理念
- 基于项目的学习方法
- 频繁的知识检测(测验)
- 实操编码练习
- 真实应用示例
- 先掌握基础再学框架
### 仓库维护
- 活跃的学习者和贡献者社区
- 定期更新依赖和内容
- 维护者监控问题和讨论
- 翻译更新自动化通过GitHub Actions
### 相关资源
- [Microsoft Learn模块](https://docs.microsoft.com/learn/)
- [学生中心资源](https://docs.microsoft.com/learn/student-hub/)
- 推荐学习者使用[GitHub Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot)
- 额外课程:生成式AI、数据科学、机器学习、物联网课程等
### 使用具体项目
详见各项目README文件:
- `quiz-app/README.md` - Vue 3测验应用
- `7-bank-project/README.md` - 带认证的银行应用
- `5-browser-extension/README.md` - 浏览器扩展开发
- `6-space-game/README.md` - 基于Canvas的游戏开发
- `9-chat-project/README.md` - AI聊天助手项目
### Monorepo结构
虽非传统monorepo,但此仓库包含多个独立项目:
- 每课内容自成体系
- 项目不共享依赖
- 可单独开发项目互不影响
- 克隆整个仓库获得完整课程体验
---
**免责声明**:
本文件由 AI 翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。虽然我们力求准确,但请注意自动翻译可能包含错误或不准确之处。原文的母语版本应被视为权威来源。对于重要信息,建议使用专业人工翻译。我们不对因使用本翻译而产生的任何误解或误释承担责任。