[![GitHub license](https://img.shields.io/github/license/microsoft/Web-Dev-For-Beginners.svg)](https://github.com/microsoft/Web-Dev-For-Beginners/blob/master/LICENSE) [![GitHub contributors](https://img.shields.io/github/contributors/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/graphs/contributors/) [![GitHub issues](https://img.shields.io/github/issues/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/issues/) [![GitHub pull-requests](https://img.shields.io/github/issues-pr/microsoft/Web-Dev-For-Beginners.svg)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/pulls/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![GitHub watchers](https://img.shields.io/github/watchers/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Watch&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/watchers/) [![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Fork&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/network/) [![GitHub stars](https://img.shields.io/github/stars/microsoft/Web-Dev-For-Beginners.svg?style=social&label=Star&maxAge=2592000)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/stargazers/) [![](https://dcbadge.vercel.app/api/server/ByRwuEEgH4)](https://discord.gg/zxKYvhSnVp?WT.mc_id=academic-000002-leestott) [![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/microsoft/Web-Dev-For-Beginners) [![Microsoft Azure AI Foundry Discord](https://dcbadge.limes.pink/api/server/ByRwuEEgH4)](https://discord.com/invite/ByRwuEEgH4) 按照以下步骤开始使用这些资源: 1. **Fork 仓库**:点击 [![GitHub forks](https://img.shields.io/github/forks/microsoft/Web-Dev-For-beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/Web-Dev-For-Beginners/fork) 2. **克隆仓库**:`git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` 3. [**加入 Azure AI Foundry Discord,与专家和开发者交流**](https://discord.com/invite/ByRwuEEgH4) # 初学者的网页开发课程 通过微软云倡导者提供的12周综合课程,学习网页开发的基础知识。24节课涵盖了 JavaScript、CSS 和 HTML,并通过实践项目如生态瓶、浏览器扩展和太空游戏进行学习。课程包括测验、讨论和实践作业,帮助你提升技能并优化知识保留。今天就开始你的编程之旅吧! ### 🌐 多语言支持 #### 通过 GitHub Action 支持(自动更新,始终保持最新) [法语](../fr/README.md) | [西班牙语](../es/README.md) | [德语](../de/README.md) | [俄语](../ru/README.md) | [阿拉伯语](../ar/README.md) | [波斯语](../fa/README.md) | [乌尔都语](../ur/README.md) | [中文(简体)](./README.md) | [中文(繁体,澳门)](../mo/README.md) | [中文(繁体,香港)](../hk/README.md) | [中文(繁体,台湾)](../tw/README.md) | [日语](../ja/README.md) | [韩语](../ko/README.md) | [印地语](../hi/README.md) | [孟加拉语](../bn/README.md) | [马拉地语](../mr/README.md) | [尼泊尔语](../ne/README.md) | [旁遮普语(古木基文)](../pa/README.md) | [葡萄牙语(葡萄牙)](../pt/README.md) | [葡萄牙语(巴西)](../br/README.md) | [意大利语](../it/README.md) | [波兰语](../pl/README.md) | [土耳其语](../tr/README.md) | [希腊语](../el/README.md) | [泰语](../th/README.md) | [瑞典语](../sv/README.md) | [丹麦语](../da/README.md) | [挪威语](../no/README.md) | [芬兰语](../fi/README.md) | [荷兰语](../nl/README.md) | [希伯来语](../he/README.md) | [越南语](../vi/README.md) | [印尼语](../id/README.md) | [马来语](../ms/README.md) | [他加禄语(菲律宾语)](../tl/README.md) | [斯瓦希里语](../sw/README.md) | [匈牙利语](../hu/README.md) | [捷克语](../cs/README.md) | [斯洛伐克语](../sk/README.md) | [罗马尼亚语](../ro/README.md) | [保加利亚语](../bg/README.md) | [塞尔维亚语(西里尔文)](../sr/README.md) | [克罗地亚语](../hr/README.md) | [斯洛文尼亚语](../sl/README.md) | [乌克兰语](../uk/README.md) | [缅甸语(缅甸)](../my/README.md) **如果希望支持其他语言,支持的语言列表请查看 [这里](https://github.com/Azure/co-op-translator/blob/main/getting_started/supported-languages.md)** #### 🧑‍🎓 _你是学生吗?_ 访问 [**学生中心页面**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon),这里有初学者资源、学生礼包,甚至可以获得免费证书的机会。建议收藏此页面并定期查看,因为内容每月更新。 ### 📣 公告 - _使用生成式 AI 构建新项目_ 新增 AI 助手项目,快来查看 [项目](./09-chat-project/README.md) ### 📣 公告 - _新课程_ 关于 JavaScript 的生成式 AI 刚刚发布 不要错过我们的新生成式 AI 课程! 访问 [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) 开始学习! ![背景](../../translated_images/background.148a8d43afde57303419a663f50daf586681bc2fabf833f66ef6954073983c66.zh.png) - 课程涵盖从基础到 RAG 的所有内容。 - 使用生成式 AI 和我们的配套应用与历史人物互动。 - 有趣且引人入胜的叙事,你将进行时空旅行! ![角色](../../translated_images/character.5c0dd8e067ffd693c16e2c5b7412ab075a2215ce31f998305639fa3a05e14fbe.zh.png) 每节课都包括一个作业、知识检查和挑战,帮助你学习以下主题: - 提示设计与提示工程 - 文本和图像应用生成 - 搜索应用 访问 [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) 开始学习! ## 🌱 开始学习 > **教师们**,我们[提供了一些建议](for-teachers.md)供您使用此课程。欢迎在我们的[讨论论坛](https://github.com/microsoft/Web-Dev-For-Beginners/discussions/categories/teacher-corner)中提供反馈! **[学习者](https://aka.ms/student-page/?WT.mc_id=academic-77807-sagibbon)**,每节课从课前测验开始,阅读课程材料,完成各种活动,并通过课后测验检查你的理解。 为了提升学习体验,与同伴一起完成项目!我们鼓励在[讨论论坛](https://github.com/microsoft/Web-Dev-For-Beginners/discussions)中交流,我们的版主团队会回答你的问题。 为了进一步学习,我们强烈推荐探索 [Microsoft Learn](https://learn.microsoft.com/users/wirelesslife/collections/p1ddcy5jwy0jkm?WT.mc_id=academic-77807-sagibbon) 以获取更多学习材料。 ### 📋 设置你的开发环境 此课程已准备好开发环境!你可以选择在 [Codespace](https://github.com/features/codespaces/)(基于浏览器,无需安装的环境)中运行课程,或者在本地计算机上使用文本编辑器如 [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon)。 #### 创建你的仓库 为了方便保存你的学习成果,建议创建此仓库的副本。点击页面顶部的 **Use this template** 按钮即可。这将在你的 GitHub 账户中创建一个包含课程副本的新仓库。 按照以下步骤: 1. **Fork 仓库**:点击页面右上角的 "Fork" 按钮。 2. **克隆仓库**:`git clone https://github.com/microsoft/Web-Dev-For-Beginners.git` #### 在 Codespace 中运行课程 在你创建的仓库副本中,点击 **Code** 按钮并选择 **Open with Codespaces**。这将为你创建一个新的 Codespace。 ![Codespace](../../translated_images/createcodespace.0238bbf4d7a8d955fa8fa7f7b6602a3cb6499a24708fbee589f83211c5a613b7.zh.png) #### 在本地计算机上运行课程 要在本地计算机上运行课程,你需要一个文本编辑器、浏览器和命令行工具。我们的第一课 [编程语言和工具介绍](../../1-getting-started-lessons/1-intro-to-programming-languages) 将指导你选择适合自己的工具。 我们推荐使用 [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) 作为编辑器,它还内置了 [终端](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon)。你可以在 [这里](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) 下载 Visual Studio Code。 1. 将你的仓库克隆到计算机。点击 **Code** 按钮并复制 URL: [CodeSpace](./images/createcodespace.png) 然后,在 [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) 的 [终端](https://code.visualstudio.com/docs/terminal/basics/?WT.mc_id=academic-77807-sagibbon) 中运行以下命令,将 `` 替换为你刚刚复制的 URL: ```bash git clone ``` 2. 在 Visual Studio Code 中打开文件夹。点击 **File** > **Open Folder**,选择你刚刚克隆的文件夹。 > 推荐的 Visual Studio Code 扩展: > > * [Live Server](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer&WT.mc_id=academic-77807-sagibbon) - 在 Visual Studio Code 中预览 HTML 页面 > * [Copilot](https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&WT.mc_id=academic-77807-sagibbon) - 帮助你更快编写代码 ## 📂 每节课包括: - 可选的手绘笔记 - 可选的补充视频 - 课前热身测验 - 书面课程 - 对于基于项目的课程,提供逐步指导如何构建项目 - 知识检查 - 挑战 - 补充阅读 - 作业 - [课后测验](https://ff-quizzes.netlify.app/web/) > **关于测验的说明**:所有测验都包含在 Quiz-app 文件夹中,共有 48 个测验,每个测验包含三个问题。它们可以在 [这里](https://ff-quizzes.netlify.app/web/) 找到。测验应用可以在本地运行或部署到 Azure,请按照 `quiz-app` 文件夹中的说明操作。 ## 🗃️ 课程 | | 项目名称 | 教授的概念 | 学习目标 | 相关课程链接 | 作者 | | :-: | :--------------------------------------------------: | :----------------------------------------------------------------: | ----------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------: | :-------------------: | | 01 | 入门篇 | 编程简介及开发工具介绍 | 学习大多数编程语言的基本原理以及帮助专业开发人员完成工作的相关软件 | [编程语言和开发工具简介](./1-getting-started-lessons/1-intro-to-programming-languages/README.md) | Jasmine | | 02 | 入门篇 | GitHub 基础知识,包括团队协作 | 学习如何在项目中使用 GitHub,以及如何与他人协作开发代码库 | [GitHub 基础知识](./1-getting-started-lessons/2-github-basics/README.md) | Floor | | 03 | 入门篇 | 无障碍访问 | 学习网页无障碍访问的基础知识 | [无障碍访问基础](./1-getting-started-lessons/3-accessibility/README.md) | Christopher | | 04 | JS 基础 | JavaScript 数据类型 | 学习 JavaScript 数据类型的基础知识 | [数据类型](./2-js-basics/1-data-types/README.md) | Jasmine | | 05 | JS 基础 | 函数和方法 | 学习如何使用函数和方法来管理应用程序的逻辑流 | [函数和方法](./2-js-basics/2-functions-methods/README.md) | Jasmine 和 Christopher | | 06 | JS 基础 | 使用 JS 做决策 | 学习如何使用决策方法在代码中创建条件 | [做决策](./2-js-basics/3-making-decisions/README.md) | Jasmine | | 07 | JS 基础 | 数组和循环 | 使用 JavaScript 中的数组和循环处理数据 | [数组和循环](./2-js-basics/4-arrays-loops/README.md) | Jasmine | | 08 | [生态瓶](./3-terrarium/solution/README.md) | HTML 实践 | 构建 HTML 来创建一个在线生态瓶,重点是布局构建 | [HTML 简介](./3-terrarium/1-intro-to-html/README.md) | Jen | | 09 | [生态瓶](./3-terrarium/solution/README.md) | CSS 实践 | 构建 CSS 来为在线生态瓶设计样式,重点是 CSS 基础知识,包括使页面响应式 | [CSS 简介](./3-terrarium/2-intro-to-css/README.md) | Jen | | 10 | [生态瓶](./3-terrarium/solution/README.md) | JavaScript 闭包和 DOM 操作 | 构建 JavaScript 使生态瓶具备拖放功能,重点是闭包和 DOM 操作 | [JavaScript 闭包和 DOM 操作](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | | 11 | [打字游戏](./4-typing-game/solution/README.md) | 构建打字游戏 | 学习如何使用键盘事件驱动 JavaScript 应用程序的逻辑 | [事件驱动编程](./4-typing-game/typing-game/README.md) | Christopher | | 12 | [绿色浏览器扩展](./5-browser-extension/solution/README.md) | 浏览器相关知识 | 学习浏览器的工作原理、历史,以及如何搭建浏览器扩展的初始元素 | [关于浏览器](./5-browser-extension/1-about-browsers/README.md) | Jen | | 13 | [绿色浏览器扩展](./5-browser-extension/solution/README.md) | 构建表单、调用 API 并将变量存储在本地存储中 | 构建浏览器扩展的 JavaScript 元素,通过存储在本地存储中的变量调用 API | [API、表单和本地存储](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | | 14 | [绿色浏览器扩展](./5-browser-extension/solution/README.md) | 浏览器后台进程和网页性能 | 使用浏览器的后台进程管理扩展图标;学习网页性能优化的一些方法 | [后台任务和性能](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | | 15 | [太空游戏](./6-space-game/solution/README.md) | 更高级的 JavaScript 游戏开发 | 学习使用类和组合进行继承,以及 Pub/Sub 模式,为构建游戏做准备 | [高级游戏开发简介](./6-space-game/1-introduction/README.md) | Chris | | 16 | [太空游戏](./6-space-game/solution/README.md) | 绘制到画布 | 学习 Canvas API,用于将元素绘制到屏幕 | [绘制到画布](./6-space-game/2-drawing-to-canvas/README.md) | Chris | | 17 | [太空游戏](./6-space-game/solution/README.md) | 在屏幕上移动元素 | 探索如何使用笛卡尔坐标和 Canvas API 使元素获得运动效果 | [移动元素](./6-space-game/3-moving-elements-around/README.md) | Chris | | 18 | [太空游戏](./6-space-game/solution/README.md) | 碰撞检测 | 使元素通过按键碰撞并相互反应,并提供冷却功能以确保游戏性能 | [碰撞检测](./6-space-game/4-collision-detection/README.md) | Chris | | 19 | [太空游戏](./6-space-game/solution/README.md) | 计分 | 根据游戏状态和表现进行数学计算 | [计分](./6-space-game/5-keeping-score/README.md) | Chris | | 20 | [太空游戏](./6-space-game/solution/README.md) | 结束和重启游戏 | 学习如何结束和重启游戏,包括清理资源和重置变量值 | [结束条件](./6-space-game/6-end-condition/README.md) | Chris | | 21 | [银行应用](./7-bank-project/solution/README.md) | 网页应用中的 HTML 模板和路由 | 学习如何使用路由和 HTML 模板创建多页面网站的架构 | [HTML 模板和路由](./7-bank-project/1-template-route/README.md) | Yohan | | 22 | [银行应用](./7-bank-project/solution/README.md) | 构建登录和注册表单 | 学习如何构建表单并处理验证逻辑 | [表单](./7-bank-project/2-forms/README.md) | Yohan | | 23 | [银行应用](./7-bank-project/solution/README.md) | 获取和使用数据的方法 | 学习数据如何在应用程序中流动、如何获取、存储和处理数据 | [数据](./7-bank-project/3-data/README.md) | Yohan | | 24 | [银行应用](./7-bank-project/solution/README.md) | 状态管理概念 | 学习应用程序如何保持状态以及如何以编程方式管理状态 | [状态管理](./7-bank-project/4-state-management/README.md) | Yohan | | 25 | [浏览器/VS Code 编辑器](../../8-code-editor) | 使用 VS Code | 学习如何使用代码编辑器 | [使用 VS Code 编辑器](./8-code-editor/1-using-a-code-editor/README.md) | Chris | | 26 | [AI 助手](./9-chat-project/README.md) | 使用 AI | 学习如何构建自己的 AI 助手 | [AI 助手项目](./9-chat-project/README.md) | Chris | ## 🏫 教学方法 我们的课程设计基于两个关键教学原则: * 项目驱动学习 * 频繁测验 该课程教授 JavaScript、HTML 和 CSS 的基础知识,以及当今网页开发人员使用的最新工具和技术。学生将有机会通过构建打字游戏、虚拟生态瓶、环保浏览器扩展、太空入侵者风格游戏以及企业银行应用程序来获得实践经验。到课程结束时,学生将对网页开发有扎实的理解。 > 🎓 您可以在 Microsoft Learn 上以 [学习路径](https://docs.microsoft.com/learn/paths/web-development-101/?WT.mc_id=academic-77807-sagibbon) 的形式学习本课程的前几节课! 通过确保内容与项目相结合,学习过程变得更加有趣,学生对概念的记忆也会得到增强。我们还编写了几节 JavaScript 基础知识的入门课程,并配有 "[JavaScript 初学者系列](https://channel9.msdn.com/Series/Beginners-Series-to-JavaScript/?WT.mc_id=academic-77807-sagibbon)" 视频教程中的视频,其中一些作者也参与了本课程的编写。 此外,课前的低压力测验可以让学生专注于学习主题,而课后的第二次测验可以进一步巩固记忆。本课程设计灵活有趣,可以完整学习或部分学习。项目从小型开始,到 12 周周期结束时逐渐变得复杂。 虽然我们有意避免引入 JavaScript 框架,以专注于网页开发人员在采用框架之前所需的基本技能,但完成本课程后的一个良好下一步是通过另一系列视频学习 Node.js:"[Node.js 初学者系列](https://channel9.msdn.com/Series/Beginners-Series-to-Nodejs/?WT.mc_id=academic-77807-sagibbon)"。 > 请访问我们的 [行为准则](CODE_OF_CONDUCT.md) 和 [贡献指南](CONTRIBUTING.md)。我们欢迎您的建设性反馈! ## 🧭 离线访问 您可以使用 [Docsify](https://docsify.js.org/#/) 离线运行此文档。Fork 此仓库,在本地机器上 [安装 Docsify](https://docsify.js.org/#/quickstart),然后在此仓库的根文件夹中输入 `docsify serve`。网站将在本地的端口 3000 上运行:`localhost:3000`。 ## 📘 PDF 所有课程的 PDF 可在 [这里](https://microsoft.github.io/Web-Dev-For-Beginners/pdf/readme.pdf) 找到。 ## 🎒 其他课程 我们的团队还制作了其他课程!请查看: - [生成式 AI 初学者课程](https://aka.ms/genai-beginners) - [生成式 AI 初学者课程 .NET](https://github.com/microsoft/Generative-AI-for-beginners-dotnet) - [使用 JavaScript 的生成式 AI](https://github.com/microsoft/generative-ai-with-javascript) - [使用 Java 的生成式 AI](https://github.com/microsoft/Generative-AI-for-beginners-java) - [AI 初学者课程](https://aka.ms/ai-beginners) - [数据科学初学者课程](https://aka.ms/datascience-beginners) - [机器学习初学者课程](https://aka.ms/ml-beginners) - [网络安全初学者课程](https://github.com/microsoft/Security-101) - [网页开发初学者课程](https://aka.ms/webdev-beginners) - [物联网初学者课程](https://aka.ms/iot-beginners) - [XR 开发初学者课程](https://github.com/microsoft/xr-development-for-beginners) - [掌握 GitHub Copilot 的智能使用](https://github.com/microsoft/Mastering-GitHub-Copilot-for-Paired-Programming) - [掌握 GitHub Copilot 的 C#/.NET 开发者课程](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) - [选择你的 Copilot 冒险](https://github.com/microsoft/CopilotAdventures) ## 获取帮助 如果您遇到困难或对构建 AI 应用有任何疑问,请加入: [![Azure AI Foundry Discord](https://img.shields.io/badge/Discord-Azure_AI_Foundry_Community_Discord-blue?style=for-the-badge&logo=discord&color=5865f2&logoColor=fff)](https://aka.ms/foundry/discord) 如果您在构建过程中有产品反馈或遇到错误,请访问: [![Azure AI Foundry Developer Forum](https://img.shields.io/badge/GitHub-Azure_AI_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) ## 许可证 此代码库遵循 MIT 许可证。有关更多信息,请参阅 [LICENSE](../../LICENSE) 文件。 --- **免责声明**: 本文档使用AI翻译服务 [Co-op Translator](https://github.com/Azure/co-op-translator) 进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们不对因使用此翻译而产生的任何误解或误读承担责任。