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