[![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,通过实践项目如生态瓶、浏览器扩展和太空游戏进行学习。课程包括测验、讨论和实践作业,帮助你提升技能并优化知识保留。今天就开始你的编程之旅吧! #### 🧑‍🎓 _你是学生吗?_ 访问 [**学生中心页面**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon),这里有初学者资源、学生礼包,甚至还有免费证书代金券的获取方式。这个页面值得收藏,每月更新内容。 ### 📣 公告 - _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](../..)./images/createcodespace.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 | [Terrarium](./3-terrarium/solution/README.md) | JavaScript 闭包,DOM 操作 | 编写 JavaScript 代码,使微型生态瓶成为一个拖放界面,重点学习闭包和 DOM 操作 | [JavaScript 闭包,DOM 操作](./3-terrarium/3-intro-to-DOM-and-closures/README.md) | Jen | | 11 | [Typing Game](./4-typing-game/solution/README.md) | 构建一个打字游戏 | 学习如何使用键盘事件来驱动 JavaScript 应用程序的逻辑 | [事件驱动编程](./4-typing-game/typing-game/README.md) | Christopher | | 12 | [Green Browser Extension](./5-browser-extension/solution/README.md) | 浏览器相关工作 | 学习浏览器的工作原理、历史,以及如何搭建浏览器扩展的基本元素 | [关于浏览器](./5-browser-extension/1-about-browsers/README.md) | Jen | | 13 | [Green Browser Extension](./5-browser-extension/solution/README.md) | 构建表单、调用 API 并将变量存储在本地存储中 | 编写浏览器扩展的 JavaScript 元素,通过本地存储的变量调用 API | [API、表单和本地存储](./5-browser-extension/2-forms-browsers-local-storage/README.md) | Jen | | 14 | [Green Browser Extension](./5-browser-extension/solution/README.md) | 浏览器中的后台进程,网页性能优化 | 使用浏览器的后台进程管理扩展图标;学习网页性能优化的一些方法 | [后台任务和性能优化](./5-browser-extension/3-background-tasks-and-performance/README.md) | Jen | | 15 | [Space Game](./6-space-game/solution/README.md) | 更高级的 JavaScript 游戏开发 | 学习使用类和组合的继承以及发布/订阅模式,为构建游戏做准备 | [高级游戏开发简介](./6-space-game/1-introduction/README.md) | Chris | | 16 | [Space Game](./6-space-game/solution/README.md) | 在画布上绘图 | 学习使用 Canvas API,在屏幕上绘制元素 | [画布绘图](./6-space-game/2-drawing-to-canvas/README.md) | Chris | | 17 | [Space Game](./6-space-game/solution/README.md) | 在屏幕上移动元素 | 探索如何使用笛卡尔坐标和 Canvas API 让元素获得运动 | [移动元素](./6-space-game/3-moving-elements-around/README.md) | Chris | | 18 | [Space Game](./6-space-game/solution/README.md) | 碰撞检测 | 通过按键使元素碰撞并相互反应,并提供冷却功能以确保游戏性能 | [碰撞检测](./6-space-game/4-collision-detection/README.md) | Chris | | 19 | [Space Game](./6-space-game/solution/README.md) | 计分 | 根据游戏状态和表现进行数学计算 | [计分](./6-space-game/5-keeping-score/README.md) | Chris | | 20 | [Space Game](./6-space-game/solution/README.md) | 结束和重启游戏 | 学习如何结束和重启游戏,包括清理资源和重置变量值 | [结束条件](./6-space-game/6-end-condition/README.md) | Chris | | 21 | [Banking App](./7-bank-project/solution/README.md) | Web 应用中的 HTML 模板和路由 | 学习如何通过路由和 HTML 模板创建多页面网站的架构 | [HTML 模板和路由](./7-bank-project/1-template-route/README.md) | Yohan | | 22 | [Banking App](./7-bank-project/solution/README.md) | 构建登录和注册表单 | 学习如何构建表单并处理验证逻辑 | [表单](./7-bank-project/2-forms/README.md) | Yohan | | 23 | [Banking App](./7-bank-project/solution/README.md) | 获取和使用数据的方法 | 学习数据如何在应用中流动,如何获取、存储和处理数据 | [数据](./7-bank-project/3-data/README.md) | Yohan | | 24 | [Banking App](./7-bank-project/solution/README.md) | 状态管理的概念 | 学习应用如何保留状态以及如何以编程方式管理状态 | [状态管理](./7-bank-project/4-state-management/README.md) | Yohan | ## 🏫 教学理念 我们的课程设计基于两个关键的教学原则: * 项目驱动学习 * 频繁的小测验 该课程教授 JavaScript、HTML 和 CSS 的基础知识,以及当今 Web 开发者使用的最新工具和技术。学生将有机会通过构建打字游戏、虚拟生态瓶、环保浏览器扩展、太空入侵者风格的游戏以及企业银行应用程序来获得实践经验。在课程结束时,学生将对 Web 开发有一个扎实的理解。 > 🎓 您可以在 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 框架,以便在学习框架之前专注于成为 Web 开发者所需的基本技能,但完成本课程后的一个不错的下一步是通过另一系列视频学习 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) - [Web 开发初学者课程](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) - [为 C#/.NET 开发者掌握 GitHub Copilot](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers) - [选择你的 Copilot 冒险](https://github.com/microsoft/CopilotAdventures) ## 许可证 此仓库根据 MIT 许可证授权。有关更多信息,请参阅 [LICENSE](../../LICENSE) 文件。 --- **免责声明**: 本文档使用AI翻译服务[Co-op Translator](https://github.com/Azure/co-op-translator)进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。原始语言的文档应被视为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用此翻译而产生的任何误解或误读不承担责任。