這是一門邊做邊學的 Node.js 後端課程。你不會讀一堆理論,而是一路把同一個 todo app 養大——從最陽春的 Express 骨架,加上資料庫、關聯、會員登入、Google 登入、頭像上傳,最後部署上線。結業時你會有一個可放作品集的真實專案。
每一章都是同一個模板(五段式),兼顧現場教學與自學:
- 這章你會做出什麼、搞懂什麼 — 先設定期待
- 前置檢查 — 環境與前一章成果,自學者對得上才不卡死
- 工作坊(Tutorial) — 線性步驟,每個里程碑一個檢查點,旁邊埋連結指向概念卡
- 概念卡(Explanation) — 短、獨立、可單獨複習的「為什麼」
- 驗收 + 挑戰 — 確認跑得起來 + 進階延伸
每章資料夾固定有:README.md(總覽)、工作坊.md(動手步驟)、完成版/(可跑的里程碑成果)。
兩種章節:
- 🟩 主線(spine)= M1~M9:同一個 todo app 一路長大,後面依賴前面,建議照順序走。
- 🟦 側模組(side module)= S0~S3:獨立旁支,穿插在主線之間,有些是進階選讀。
| # | 章節 | 類型 | 你會做到 |
|---|---|---|---|
| 01 | S0 · Node.js 基礎 | 🟦 入門前置 | ESM、npm、非同步、原生 http 伺服器 |
| 02 | M1 · Express 骨架 | 🟩 主線 | 記憶體 todo CRUD,學透路由/middleware/錯誤處理 |
| 03 | S1 · SQL 基礎 | 🟦 前置 | 手寫 SQL 建出 todo 的資料庫底子 |
| 04 | M2 · 接資料庫(Drizzle) | 🟩 主線 | 把 todo 存進 PostgreSQL,schema/CRUD/migration |
| 05 | M3 · 關聯 | 🟩 主線 | 加 lists(1:N)與 tags(M:N) |
| 06 | M4 · 分層架構 | 🟩 主線 | 把 app.js 拆成 routes/controllers/services 三層 |
| 07 | M5 · Cookie / Session | 🟩 主線 | 加會員登入,todo 變「我的 todo」← 難度分水嶺 |
| 08 | M6 · JWT | 🟩 主線 | 把 session 換成 token 認證 |
| 09 | M7 · OAuth | 🟩 主線 | 用 Google 帳號登入(含 state/CSRF) |
| 10 | M8 · 檔案上傳(S3) | 🟩 主線 | 會員頭像上傳到 AWS S3 |
| 11 | S2 · Supabase | 🟦 進階旁支 | 換成雲端 PostgreSQL + Realtime / RLS |
| 12 | M9 · Railway 部署 | 🟩 主線終點 | 把 todo app 真正送上線 |
| 13 | S3 · Docker 容器化 | 🟦 進階可選 | 用 Dockerfile / Compose 讓環境完全可攜 |
最短完課路徑:照 M1→M9 主線走(中間的 S0/S1 是地基、會用到),到 M9 Railway 部署就有一個上線的 app。S2 Supabase 與 S3 Docker 是進階旁支,行有餘力再看。
M1 Express 骨架 → 記憶體 todo CRUD(先會動,連 DB 都還沒)
M2 接 Drizzle → todo 存進 PostgreSQL
M3 關聯 → 加 lists(1:N) 與 tags(M:N)
M4 分層架構 → 把 app.js 拆成 routes/controllers/services(同一支 app,先整理再長大)
M5 Cookie/Session → 加會員登入,todo 變「我的 todo」 ← 難度分水嶺
M6 JWT → 換 token 認證
M7 OAuth → Google 登入
M8 S3 上傳 → 會員頭像(此時 user/auth 已齊)
M9 Railway 部署 → 上線
概念卡是獨立的「為什麼」說明,工作坊步驟會在對應時機連過去,課後也能單獨複習。安全相關的卡刻意把優點與代價寫在同一段,避免把觀念講得太樂觀。
Node / Express
資料庫
認證與安全
檔案、雲端、部署
- 檔案上傳 multer · S3 presigned URL
- Supabase 金鑰與連線 · Supabase RLS · Supabase Realtime
- 部署:環境變數與正式設定 · Docker image vs container
環境 / 工具
- Windows 指令對照(Windows 使用者必看)
- Runtime:Node.js 22 LTS(全程 ESM)
- 框架:Express 5
- 資料庫:PostgreSQL(本機 / Supabase / Railway)
- ORM:Drizzle ORM
- 認證:bcrypt、express-session、JWT、Google OAuth
- 雲端 / 部署:AWS S3、Supabase、Railway、Docker
- Node.js 22 LTS 以上(
node -v確認;建議用 nvm 管理版本) - PostgreSQL 16+(M2 起需要;本機安裝或用 Docker 起一個都行)
- 一個能打 API 的工具:VS Code REST Client、Postman,或終端機
curl - 後段章節各自需要的免費帳號:AWS(M8)、Supabase(S2)、Railway(M9)、Docker Desktop(S3)
🪟 Windows 使用者:課程指令以 macOS / Linux(bash)為基準,有幾個地方(
curl、cp、psql)在 Windows 寫法不同。開課前先看 Windows 指令對照,遇到指令跑不動回來對一下。
# 從第一章開始
cd 01-about-nodejs
# 讀 README.md,跟著 工作坊.md 動手做
# 想直接跑某章的成果,進它的 完成版/
cd 02-express-basics/完成版
npm install
npm run dev從 S0 · Node.js 基礎 開始,照課程地圖一路往下。祝你寫得開心 🚀