[![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) # 初学者的网页开发课程 通过微软云倡导者提供的为期12周的综合课程,学习网页开发的基础知识。24节课涵盖了JavaScript、CSS和HTML,通过实践项目如生态瓶、浏览器扩展和太空游戏进行学习。课程包含测验、讨论和实践作业,帮助你提升技能并优化知识吸收。今天就开始你的编程之旅吧! #### 🧑‍🎓 _你是学生吗?_ 访问 [**学生中心页面**](https://docs.microsoft.com/learn/student-hub/?WT.mc_id=academic-77807-sagibbon),你可以找到初学者资源、学生礼包,甚至有机会获得免费证书代金券。记得将此页面加入书签并定期查看,我们会每月更新内容。 ### 📣 公告 - _全新生成式AI JavaScript课程_ 已发布 不要错过我们的全新生成式AI课程! 访问 [https://aka.ms/genai-js-course](https://aka.ms/genai-js-course) 开始学习!
- 课程内容涵盖从基础到RAG的所有内容。 - 使用生成式AI和我们的配套应用与历史人物互动。 - 有趣且引人入胜的叙事,你将进行时间旅行!
每节课都包含一个作业、知识检查和挑战,帮助你学习以下主题: - 提示和提示工程 - 文本和图像应用生成 - 搜索应用 访问 [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以供学习。 Create codespace #### 在本地运行课程 要在本地运行课程,你需要一个文本编辑器、浏览器和命令行工具。我们的第一节课 [编程语言和工具介绍](https://github.com/microsoft/Web-Dev-For-Beginners/tree/main/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: Copy your repository URL 然后,在 [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) - 帮助你更快地编写代码 ## 📂 每节课包含: - 可选的手绘笔记 - 可选的补充视频 - 课前热身测验 - 书面课程 - 针对项目的逐步构建指南 - 知识检查 - 挑战 - 补充阅读 - 作业 - 课后测验 > **关于测验的说明**:所有测验都在Quiz-app文件夹中,共48个测验,每个测验包含三个问题。测验链接在课程中,可以本地运行或部署到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 and 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 | [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) | 网页应用中的 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 的基础知识,以及当今网页开发者使用的最新工具和技术。学生将有机会通过构建打字游戏、虚拟生态瓶、环保浏览器扩展、太空入侵者风格游戏以及企业银行应用来获得实践经验。课程结束时,学生将对网页开发有一个扎实的理解。 > 🎓 您可以在 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) - [为 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)进行翻译。尽管我们努力确保翻译的准确性,但请注意,自动翻译可能包含错误或不准确之处。应以原始语言的文档作为权威来源。对于关键信息,建议使用专业人工翻译。我们对因使用本翻译而引起的任何误解或误读不承担责任。