100 天 Web 开发学习计划
这份 **100 天 Web 开发学习计划** 提供了一个结构化的路径,帮助你在 100 天内学习 Web 开发。本学习计划将 Web 开发概念分解成每日任务,从 HTML、CSS 和 JavaScript 开始,涵盖现代 Web 框架、Web 安全概念和全栈部署。因此,如果你想要全面了解 Web 开发,请阅读本文,并点击附加的超链接查看每个主题的详细概述。
什么是 Web 开发?
Web 开发是创建和维护互联网上网站的过程。它包括三个部分:首先是前端开发,专注于开发用户界面;然后是后端开发,涉及创建服务器端逻辑;最后是数据库管理,用于存储和检索用户数据。
Web Development = Front-End + Back-End + DataBase
目录
基础阶段 (第 1-25 天): HTML & CSS 基础
HTML 和 CSS 是 Web 开发的关键部分。要学习 Web 开发,首先需要学习 HTML 标记语言,它用于为网页添加结构。
第 1 周:HTML 基础
在第一周,你需要学习基本的 HTML 概念,如何显示文本、标题、超链接等。以下是按天细分的学习内容。
- **第 1 天:**第一天,学习什么是 HTML 以及为什么它用于 Web 开发。然后使用下面的参考资料学习 HTML 的基本标签。
- **第 2 天:**学习与处理网页文本相关的标签,例如段落、标题、节等。
- **第 3 天:**第三天,学习如何在 HTML 中添加背景颜色、设置字体颜色、各种颜色函数以及图像处理。
- **第 4 天:**第四天,学习 HTML 中的有序列表和无序列表。还包括超链接,涉及链接页面、将图像链接到网页以及生成电子邮件链接。
- **第 5 天:**学习如何在 HTML 中设计表格。学习与表格相关的标签(<td>,<tr>,<th>,<body> 和 <thead>),并学习如何跨越多列和多行创建复杂的表格。
- **第 6 天:**学习如何在 HTML 中构建表单。这应该包括各种输入元素、提交按钮及其用例。此外,学习基本的验证技术,无需使用 JavaScript。
- **第 7 天:**现在是时候构建一个简单的 HTML 项目了。使用以下参考资料创建一个投资组合网站,这将帮助你复习所有之前的主题。
第 2 周:CSS 基础
在第二周,开始学习基本的 CSS 概念,例如常用的属性和选择器。
- **第 8 天:**开始学习 CSS 选择器及其类型,包括类、ID 和元素选择器。了解如何将 CSS 文件链接到 HTML 文件。
- **第 9 天:**学习 CSS 中的盒子模型。还包括 margin、padding、border 等属性以及它们如何影响布局。
- **第 10 天:**学习颜色和排版。学习如何设置背景颜色、文本颜色以及使用 CSS 设置字体样式。
- **第 11 天:**了解 display 属性和定位。学习 block、inline、inline-block 元素以及 relative、absolute 和 fixed 等定位技术。
- **第 12 天:**学习如何使用 Flexbox 在容器中水平和垂直排列项目。
- **第 13 天:**学习 Flexbox 后,开始学习 Grid 布局系统,它具有更多排列项目的功能,可用于二维网格化设计。
- **第 14 天:**通过为之前创建的 HTML 项目设置样式来应用你的知识。使用 CSS 改善你的投资组合网站的设计。
第 3 周:响应式设计
在第三周,开始学习响应式 Web 设计的概念,包括媒体查询、容器查询、响应式单位和响应式视口。
- **第 15 天:**从响应式 Web 设计的介绍开始,学习它的好处、为什么使用它等等。还要了解用于响应式设计的流行框架。
- **第 16 天:**学习媒体查询、容器查询和断点,这些允许你创建适应不同屏幕尺寸的设计。
- **第 17 天:**学习如何使用 CSS 属性(如 `max-width` 和 `height: auto`)使图像和视频具有响应性。
- **第 18 天:**探索不同的 CSS 单位,如 em、rem、vh 和 vw,这些对于创建响应式布局至关重要。此外,学习如何使用媒体查询来指定打印页面样式。
- **第 19 天:**创建一个响应式登录页面作为项目。使用以下参考资料进行指导
第 4 周:高级 CSS
在第四周,学习高级 CSS 技术和最佳实践,以创建专业且可扩展的设计。
- **第 20 天:**学习 CSS 变量以及如何定义和使用自定义属性。学习特异性以了解 CSS 规则的优先级顺序。此外,学习如何在容器中控制溢出的文本。
- **第 21 天:**第二天,学习如何使用 CSS 动画和过渡创建视觉效果。
- **第 22 天:**使用动画和过渡,学习构建加载器和图片库
- **第 23 天:**学习表格和图像常用的样式。学习如何设计多列文本布局。
- **第 24 天:**学习流行的 CSS 框架,如 Tailwind 和 Bootstrap。学习使用它们的益处。
- **第 25 天:**致力于创建投资组合网站的第一个版本。结合迄今为止学习的所有概念来完成这个项目。
交互阶段 (第 26-50 天): JavaScript 基础
本阶段介绍 JavaScript,这是一种使网页具有交互性的编程语言。你将从基础知识开始,逐步学习高级概念和项目。
第 5 周:JavaScript 基础
学习 JavaScript 的基本概念及其工作原理。
- **第 26 天:**了解变量、数据类型和运算符。学习如何使用 `var`、`let` 和 `const` 声明变量。
- **第 27 天:**学习控制结构,如 `if/else` 和循环(`for`、`while`),以控制程序的流程。
- **第 28 天:**了解函数,如何定义它们以及 JavaScript 中的作用域。
- **第 29 天:**学习对象、它们的属性和方法。学习如何在 JavaScript 中创建和使用对象。各种对象类型(数组、字符串等)
- 第30天:学习数组和字符串,它们的方法以及如何操作数组元素。
- 第31天:学习文档对象模型 (DOM) 以及如何使用 JavaScript 操作 HTML 元素。
- 第32天:创建一个交互式表单验证项目,运用到目前为止学习的所有知识。
- 交互式表单验证项目
第6周:高级JavaScript
第6周重点学习JavaScript的高级特性,例如ES6特性、事件处理、存储API和错误处理。以下是每天的细分。
- 第33天:学习JavaScript中的事件处理,以响应用户的操作,例如点击、悬停和按键。
- 第34天:理解本地存储和会话存储,用于在浏览器中存储数据。学习如何在JavaScript中编写存储脚本,并尝试将其应用到HTML页面。
- 第35天:探索现代ES6+特性,例如箭头函数和解构赋值。
- 第36天:学习使用Promise和async/await处理异步任务。
- 第37天:学习使用Fetch API并了解AJAX如何与服务器通信。
- 第38天:使用`try`、`catch`和`finally`了解JavaScript中的错误处理。
- 第39天:创建一个天气应用程序项目,使用'openWeatherMap API'获取天气详情并在浏览器中显示。
- 天气应用项目
第7周:现代JavaScript
深入学习高级概念和现代JavaScript实践。
- 第40天:学习什么是JavaScript模块以及如何导入/导出它们。
- 第41天:理解面向对象编程(OOP)的概念以及如何在JavaScript中使用类。
- 第42天:学习使用Map、Set和WeakMap存储数据集合。
- 第43天:学习正则表达式,用于文本中的模式匹配和验证。
- 第44天:学习如何在JavaScript中操作日期和时间。
- 第45天:学习如何使用JSON,包括解析和序列化数据。
- 第46天:构建一个任务管理应用程序来练习现代JavaScript概念。
- 任务管理应用
第8周:开发者工具
学习现代JavaScript开发的必要工具和实践。
- 第47天:学习如何使用Chrome DevTools调试JavaScript。
- 第48天:了解npm包管理,以及如何在项目中安装和使用包。
- 第49天:学习Webpack及其在捆绑JavaScript文件中的作用。
- 第50天:通过添加JavaScript交互功能,完成你的投资组合网站的第二个版本。
- 投资组合网站v2.0
框架阶段 (第51-75天):现代Web开发
本阶段重点学习现代框架和后端基础知识,以创建全栈应用程序。
第9周:React基础
React是一个流行的用于构建用户界面的JavaScript库。虽然你可以使用纯HTML和CSS构建UI,但对于高级特性和功能,React是必须的。所以学习React很重要。
- 第51天:设置React应用程序并学习JSX,这是一种在JavaScript中编写类似HTML代码的语法。
- 第52天:理解组件、props以及如何在它们之间传递数据。
- 第53天:学习React中的状态和状态管理,然后学习什么是Hook以及React中不同类型的Hook。
- 第54天:`useState`和`useEffect` Hook是React中常用的用于状态管理和API调用的Hook。因此,将一整天的时间都用来学习`useEffect`和`useState` Hook。
- 第55天:学习如何在React中添加和处理事件。涵盖箭头方法和绑定方法,以将参数传递给事件处理程序。
- 第56天:学习如何在React中构建应用程序表单并管理表单数据、验证和其他功能。
- 第57天:创建一个项目:React中的待办事项应用程序,以练习这些概念。
- React待办事项应用项目
第10周:高级React
开始学习React的高级功能,例如上下文API、自定义Hook、使用Redux进行状态管理等。以下是每天的细分。
- 第58天:开始学习React中的上下文API。了解如何在不使用props的情况下将信息从父组件传递到其所有子组件。
- 第59天:学习如何在React中创建自定义Hook。了解使用自定义Hook在多个组件之间重用逻辑。
- 第60天:学习使用React Router在你的应用程序中实现导航和路由。
- 第61天:学习如何使用useEffect Hook集成API,以从外部来源获取数据并实时更新渲染的内容。
- 第62天:学习使用React的Redux库进行高级状态管理原则。了解如何使用Redux API在复杂组件中进行状态管理。
- 第63天:将这一天用于学习与测试React应用程序相关的所有概念。学习什么是JEST,如何使用@testing-library库等。
- 第64天:创建一个项目:使用React的电子商务产品页面。
- 电子商务产品页面
第11周:后端基础
现在是时候开始学习后端开发并构建RESTful API来与前端框架进行通信了。
- 第65天:对于后端开发,开始学习Node.js的基础知识,使用Node.js创建一个JavaScript运行时,尝试设置NodeJS环境并使用Node.js后端创建你的第一个应用程序。
- 第66天:在学习Node.js之后,开始学习Express.js Web应用程序框架。学习开发Express.js环境,然后创建一个简单的Hello World应用程序,然后学习如何在Express.js中管理REST API。
- 第67天:学习更多关于RESTful API设计的基本原则、REST API的类型、方法以及如何在JavaScript环境中使用REST API。
- 第68天:开始学习MongoDB,这是一个NoSQL数据库,用于存储和管理用户数据。学习如何创建数据库、创建集合、更新数据等。还要学习如何将MongoDB集成到JavaScript环境中。
- 第69天:学习如何使用MongoDB和Express执行CRUD(创建、读取、更新、删除)操作。
- 第70天:使用JSON Web Tokens (JWT)实现用户身份验证。
- JWT身份验证
- 第71天:创建一个项目:为一个简单的应用程序构建一个RESTful API。
- RESTful API项目
项目阶段 (第76-100天):全栈开发
本阶段将你的前端、后端和部署技能结合起来,创建具有高级功能的完整全栈应用程序。
第12周:全栈集成
学习如何将前端与后端集成,并处理全栈开发中的常见挑战。以下是每天的细分。
- 第72天:学习如何使用API连接前端和后端。涵盖不同类型的HTTP方法来调用API,包括前端和后端。
- 第73天:学习如何在大量用户同时访问页面时为你的网页设置扩展。此功能仅在你开发功能齐全的生产就绪型Web应用程序时才需要。
- 第74天:学习DBMS的基本概念,用于设计合适的数据库模式。学习如何规范化你的数据库,以减少存储空间并快速检索数据。
- 第75天:学习Node.js中的文件系统,如何处理用户上传的文件,如何在最小存储空间中存储文件等。
- 第76天:学习实现错误处理和日志记录机制,以进行快速调试。
- 第77天:学习优化应用程序性能以加快加载速度和响应速度所需的概念。
- 第78天:创建一个项目:一个数据库管理项目,具有CRUD操作、身份验证和文件上传等功能。
- 图书馆管理系统项目
第13周:高级功能
使用实时更新、搜索、安全和其他高级功能来增强应用程序。
- 第79天:学习如何使用WebSocket API实现实时更新。如果你正在构建实时应用程序(如聊天应用程序、视频通话应用程序等),这些非常有用。
- 第80天:学习如何在你的网页中添加搜索功能来过滤内容。一些搜索功能可以使用JavaScript在前端实现。但有时数据可能存储在后端,需要从服务器获取并显示给用户。因此,学习实现优化的搜索算法。
- 客户端搜索
- 服务器端搜索
- 第81天:学习如何在你的网页中实现分页。分页是创建大型网页的多个片段并将它们逐一显示给最终用户。
- 第82天:学习如何使用图像精灵和其他方法优化图像,以加快加载时间并提高性能。
- 第83天:学习SEO基础知识,以提高搜索引擎可见性。这将有助于您的网页在谷歌搜索结果中获得更高的排名。
- 第84天:学习应用程序安全最佳实践,以保护您的应用程序。
- 第85天:创建一个项目:具有实时消息功能的聊天应用程序。
- 聊天应用程序项目
第14周:部署和DevOps
将您的应用程序部署到网络,并学习DevOps基础知识以改进软件交付。
- 第86天:学习如何使用Git控制不同版本的网页,以及如何使用GitHub管理多个存储库。学习使用GitHub Copilot简化Web开发流程并在GitHub上管理代码。
- 第87天:了解持续集成和持续交付 (CI/CD) 的基础知识。
- 第88天:学习Docker基础知识,以容器化您的应用程序。
- 第89天:学习将应用程序部署到Heroku或Vercel等云平台。
- 第90天:学习如何为您的应用程序设置域名和配置DNS。
- 第91天:了解什么是SSL证书,为什么使用它,以及如何在您的项目中安装它。
- 第92天:创建一个项目:部署包含所有这些组件的全栈应用程序。
第15周:最终项目
本周致力于构建和部署完整的Web应用程序。以下是按天细分的计划。
- 第93天:规划项目,定义需求并设置开发环境。
- 第94-95天:开发后端、API、数据库集成和身份验证。
- 第96-97天:构建具有各种屏幕尺寸用户界面的前端。
- 第98天:将前端与后端连接,并测试应用程序是否存在任何潜在问题。
- 第99天:将应用程序部署到Heroku或Vercel等实时服务器。
- 第100天:添加最终润色,编写文档并展示项目。
实践项目建议
- 博客平台:创建一个博客平台,用户可以在其中撰写、编辑和发布文章。添加用户身份验证、评论和标签等功能。
- 前端:使用React.js,它可以为博客页面构建动态组件。
- 后端:使用Django,一个基于Python的后端,易于使用。
- 数据库:使用PostgreSQL,它存储诸如文章之类的结构化数据。
示例:Tutorialspoint文章部分,这是一个用户可以撰写、阅读、发布和评论文章的平台。
- 预订系统:为约会或活动注册等服务创建一个预订应用程序。添加可用性检查和确认通知等功能。
- 前端:使用Angular,它可以处理动态表单。
- 后端:使用Node.js,以管理多个请求。
- 数据库:使用MongoDB,它存储灵活的数据。
示例:谷歌航班预订系统,印度铁路公司火车预订系统
- 个人作品集:创建一个个人作品集网站,以展示您的技能、项目和经验。
- 前端:使用HTML和Bootstrap CSS,快速响应式设计。
- 后端:不需要。
- 数据库:不需要
示例:作品集网站,这是一个使用HTML和CSS设计的简单作品集网站,展示工作经验。
- 电子商务网站:构建一个在线商店,具有产品列表、购物车和结账等功能。使用支付网关API处理支付。
- 前端:使用Vue.js,它具有反应式产品列表。
- 后端:使用Express.js,可以高效地处理API。
- 数据库:使用MySQL,用于关系数据管理。
示例:Flipkart,亚马逊
- 社交媒体克隆:创建一个简化版本的社交媒体平台,用户可以在其中创建个人资料、发布更新并通过点赞和评论与其他人互动。
- 前端:使用React Js和React Native,同时构建Web和移动应用程序。
- 后端:使用Django
- 数据库:使用Firebase。
示例:Instagram,Facebook
- 任务管理应用程序:开发一个应用程序来管理任务、设置截止日期和跟踪进度。添加优先级和提醒等功能,以提高可用性。
- 前端:使用React.js
- 后端:使用Flask
- 数据库:使用SQLite
示例:Google Tasks,谷歌开发的任务管理应用程序,包含在Google Workspace中。
- 天气应用程序:构建一个天气应用程序,显示位置输入的实时天气数据。使用OpenWeatherMap或任何其他API收集实时天气数据。
- 前端:使用原生JavaScript。
- 后端:使用Node.js,易于处理API请求。
- 数据库:不需要。
示例:AccuWeather,谷歌天气
- 实时聊天应用程序:开发一个支持使用WebSocket进行实时消息传递的聊天应用程序。添加用户身份验证和群聊功能等。
- 前端:使用React.js,易于构建实时聊天UI。
- 后端:使用Socket.IO,基于WebSocket的消息传递。
- 数据库:使用MongoDB或Firebase,易于存储聊天消息。
示例:WhatsApp,Telegram,Google Chat
- 招聘网站:构建一个招聘门户网站,雇主可以在其中发布职位空缺,用户可以在其中搜索和申请职位。包含筛选和简历上传功能,方便使用。
- 前端:使用Vue.js
- 后端:使用Django。
- 数据库:使用PostgreSQL。
每日练习指南
- 每天至少花2个小时学习当天的主题
- 每天构建一些小东西
- 记录您的学习过程
- 每天将代码提交到GitHub
- 定期复习前几天的概念
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP