JS 筆記06_後端第一篇:Node.js 專案開發實戰(基礎 → 架構 → 測試)

更新於 發佈於 閱讀時間約 10 分鐘

前情提要:從前端到後端的橋樑

前面了解 React、Vue 或其他前端框架,但當你需要與資料庫溝通、處理使用者輸入或串接第三方服務時,就需要一個能處理 HTTP 請求的後端框架。這時,Express + Node.js 就是最輕量、最易入門的選擇。

Copilot 建議我的文章順序,也是我這篇的目錄。CI/CD 會留在下一篇~

Copilot 建議我的文章順序,也是我這篇的目錄。CI/CD 會留在下一篇~

Express 是什麼?為什麼選它?

Express 是一個基於 Node.js 的 Web 應用框架,讓你能快速建立 API、處理路由、管理中介軟體(middleware)等。簡單來說,它是你與前端、資料庫之間的橋樑。

為什麼要建立 routes?

在 Express 裡,「routes(路由)」就像是網站的導覽地圖,它告訴伺服器「當使用者發送某個請求時,要去哪裡處理這個請求」。

舉例來說:

• 使用者打開 → 伺服器就去找「處理使用者資料」的程式碼

• 使用者送出 POST 到 → 伺服器就去執行「登入邏輯」

所以建立 routes 的目的就是:

• 把不同功能的 API 分門別類

• 讓程式碼更清楚、更好維護

• 幫助前端知道該怎麼跟後端溝通

你可以把 routes 想成「前端按下按鈕 → 後端接收到指令 → 執行對應的功能」的橋樑。

① Express CRUD 操作入門

📌 HTTP 方法語義與用途

raw-image

這些可以對應到:

這就是 CRUD 的原本意義(圖片來源)what is rest API

這就是 CRUD 的原本意義(圖片來源)what is rest API

What Is REST API? Examples And How To Use It: Crash Course System Design #3


來練習看看吧,範例程式碼要在哪裡執行?

你可以在本機建立一個小型 Express 專案來執行這段程式碼。步驟如下:

① 在命令提示元建立專案資料夾

我用vscode的terminal

raw-image
mkdir my-api-demo
cd my-api-demo

② 初始化 Node.js 專案 (要先裝node.js喔,這裡我請AI 協助)

安裝 Node.js(含 npm)

1. 前往官方網站下載安裝程式: 👉 https://nodejs.org/

2. 建議選擇「LTS(長期支援版)」,比較穩定。

3. 安裝過程中請確保勾選「Add to PATH」選項,這樣系統才能找到 和 指令。

不要在 或 資料夾裡操作 Node 專案,建議另外新增資料夾

mkdir my-node-project
cd my-node-project
npm init -y

4. 安裝完成後,重新啟動終端機,再次輸入:

npm init -y

③ 安裝 Express

npm install express
raw-image

④ 建立 server.js 檔案,貼上範例程式碼

// server.js
const express = require('express');
const app = express();
app.use(express.json());

app.get('/items', (req, res) => {
res.send('取得所有項目');
});

app.post('/items', (req, res) => {
res.send('新增項目');
});

app.put('/items/:id', (req, res) => {
res.send(`更新項目 ${req.params.id}`);
});

app.delete('/items/:id', (req, res) => {
res.send(`刪除項目 ${req.params.id}`);
});

app.listen(3000, () => console.log('Server is running on port 3000'));

⑤ 啟動伺服器

node server.js

⑥ 用 Postman 或 curl 測試 API

例如:

curl http://localhost:3000/items

你就會看到伺服器回傳 的字樣


② 專案基本結構與環境設置

package.jsonpackage-lock.json 差別

在團隊協作時,可能因作業系統不同環境不同,導致下載的 npm 版本不一致,所以要把package-lock.json 加到 git 鎖定

你知道package-lock.json的功能嗎?跟package.json有什麼差?【npm教學】

raw-image
.gitignore 實際用法:避免 push 不必要的檔案

避免將以下檔案 push 到 Git:node_modules/ .env *log.

為什麼不要 push?node_modules/

    • 太大了:這個資料夾可能包含上千個檔案,幾百 MB,甚至幾 GB,會讓 Git repo 膨脹到難以管理。

為什麼不要 push?.env— 環境變數檔案

  • 包含敏感資訊:像是 API 金鑰、資料庫密碼、JWT secret 等,push 上去就等於公開了你的鑰匙。
  • 不同環境不同設定:開發、測試、正式環境的 通常不一樣,push 上去會造成混淆或錯誤。
  • 正確做法:在.gitignore 加入 .env。建議建立 .env.example,只列出變數名稱,不含值,方便其他開發者參考。

為什麼不要 push?.*log— 日誌檔案

  • 無意義的變更(紀錄每次變更):log 檔會不斷更新,造成 Git commit 記錄混亂。
  • 可能包含錯誤或敏感資訊:像是錯誤堆疊、使用者資料、debug 訊息等,不適合公開。
  • 佔空間又難讀:Git 不是用來儲存這類動態檔案的。

正確做法:.gitignore 加入:

*.log logs/
「Git 是用來記錄程式的設計圖,不是用來搬磚頭。像 node_modules 就是磚頭,太重又可以重建;.env 是鑰匙,不能亂丟;而 *.log 是施工現場的雜音,沒必要記錄。」

📌 專案目錄結構範例圖

my-express-app/
├── routes/
│ └── items.js
├── .env
├── .gitignore
├── package.json
├── server.js
└── node_modules/

③ 為什麼 RESTful 重要?

參考資料:

RESTful APIs in 100 Seconds // Build an API from Scratch with Node.js Express

RESTful API 是現代 Web 應用的溝通語言,它的重要性來自於:

一致性:統一的設計原則讓前後端協作更順暢。

可預測性:開發者只看 URL 和 HTTP 動作就能猜出功能。

可擴充性:資源導向設計讓 API 更容易擴充與維護。

語意清晰:HTTP 動作(GET、POST、PUT、DELETE)本身就代表操作意圖。

資源導向設計:以 /user 為例

在 RESTful 中,一切都是「資源」(名詞),而不是「動作」 (動詞)。例如:

GET    /users           → 取得所有使用者
GET /users/42 → 取得 ID42 的使用者
POST /users → 新增使用者
PUT /users/42 → 更新 ID42 的使用者
DELETE /users/42 → 刪除 ID42 的使用者

這樣的設計讓 API 像是在操作資料庫中的「表格」,而不是呼叫一堆動詞。

What Is REST API? Examples And How To Use It: Crash Course System Design #3

表格由AI生成

表格由AI生成

📌 表格:HTTP 動作 vs RESTful API 路徑設計對照表

raw-image

在設計 RESTful API 路由時,我們定義了資源的操作方式,例如 的新增、查詢、更新與刪除。但這些路由背後的核心,其實是資料的結構與儲存方式。

為了讓 API 能夠穩定地操作資料庫,我們需要設計清晰的資料模型,並透過 ORM 或 ODM 工具來管理資料的存取邏輯。這不只是程式碼的封裝,更是資料與業務邏輯的橋樑。

4.資料存取層架構:ORM vs ODM

ORM(Object-Relational Mapping):用物件操作 SQL 資料庫(如 Sequelize、TypeORM)

ODM(Object-Document Mapping):用物件操作 NoSQL 資料庫(如 Mongoose for MongoDB)

資料模型設計範例

Sequelize 定義 User 模型的方式,透過這個工具把 SQL 轉成可用JS 操作的方式,特別用來操作關聯型資料庫。

Mongoose 定義 User schema 的方式, 把 MongoDB 的文件變成 JavaScript 物件,還能加上驗證與邏輯

對照 RESTful 路由/User 的資料結構

raw-image

🔹 結語

由於本篇篇幅太長,我把 CI/ CD 獨立出來再做說明。

留言
avatar-img
留言分享你的想法!
avatar-img
越南放大鏡 X 下班資工系
36會員
88內容數
雙重身份:越南放大鏡 X 下班資工系 政大東南亞語言學系是我接觸越南語的起點,畢業後找越南外派工作的生活跟資訊時,發現幾乎都是清單式的分享,很難身歷其境。所以我希望「越南放大鏡」可以帶讀者看到更多細節和深入的觀察。 - 下班資工系則是自學資工系的課程內容,記錄實際操作的過程,學習理論的過程。希望可以跟讀者一起成長。
2025/08/04
AI 時代,買課程滿天飛,但怎麼學才會精? 我花了一次家教費,換來不必一輩子買課程,也學會真正探索知識、克服卡關的方法。 這篇文章分享我從半途而廢到真正開竅的學習故事,告訴你在資訊爆炸時代,怎麼握緊自己的方向。
Thumbnail
2025/08/04
AI 時代,買課程滿天飛,但怎麼學才會精? 我花了一次家教費,換來不必一輩子買課程,也學會真正探索知識、克服卡關的方法。 這篇文章分享我從半途而廢到真正開竅的學習故事,告訴你在資訊爆炸時代,怎麼握緊自己的方向。
Thumbnail
2025/08/01
現代 JavaScript 教學:從語法到實戰應用,涵蓋陣列方法(map, forEach, reduce)、物件解構、原型鏈與 Class、React 基礎(函數組件、useState)、JavaScript 引擎簡介及商業應用案例。教學包含圖解、範例及常見錯誤比較,幫助讀者快速上手。
Thumbnail
2025/08/01
現代 JavaScript 教學:從語法到實戰應用,涵蓋陣列方法(map, forEach, reduce)、物件解構、原型鏈與 Class、React 基礎(函數組件、useState)、JavaScript 引擎簡介及商業應用案例。教學包含圖解、範例及常見錯誤比較,幫助讀者快速上手。
Thumbnail
2025/07/28
這篇文章循序漸進介紹 JavaScript 的非同步機制,包含同步與非同步的概念、call stack 和 event loop 的運作、callback、Promise 和 async/await 的用法與優缺點,並搭配程式碼範例及商業應用情境說明,幫助讀者瞭解非同步流程並提升開發效率。
Thumbnail
2025/07/28
這篇文章循序漸進介紹 JavaScript 的非同步機制,包含同步與非同步的概念、call stack 和 event loop 的運作、callback、Promise 和 async/await 的用法與優缺點,並搭配程式碼範例及商業應用情境說明,幫助讀者瞭解非同步流程並提升開發效率。
Thumbnail
看更多
你可能也想看
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
透過蝦皮分潤計畫,輕鬆賺取零用金!本文分享5-6月實測心得,包含數據流程、實際收入、平臺優點及注意事項,並推薦高分潤商品,教你如何運用空閒時間創造被動收入。
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
單身的人有些會養寵物,而我養植物。畢竟寵物離世會傷心,植物沒養好再接再厲就好了~(笑)
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
不知你有沒有過這種經驗?衛生紙只剩最後一包、洗衣精倒不出來,或電池突然沒電。這次一次補貨,從電池、衛生紙到洗衣精,還順便分享使用心得。更棒的是,搭配蝦皮分潤計畫,愛用品不僅自己用得安心,分享給朋友還能賺回饋。立即使用推薦碼 X5Q344E,輕鬆上手,隨時隨地賺取分潤!
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
身為一個典型的社畜,上班時間被會議、進度、KPI 塞得滿滿,下班後只想要找一個能夠安靜喘口氣的小角落。對我來說,畫畫就是那個屬於自己的小樹洞。無論是胡亂塗鴉,還是慢慢描繪喜歡的插畫人物,那個專注在筆觸和色彩的過程,就像在幫心靈按摩一樣,讓緊繃的神經慢慢鬆開。
Thumbnail
在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
Thumbnail
在這篇教學文章中,我們將展示如何使用 Node.js 建立一個簡單的伺服器,並解決常見的跨來源資源共享(CORS)問題,確保伺服器能夠接收並處理來自不同來源的資料。
Thumbnail
※ 什麼是Middleware (中介層)? Middleware 一般翻譯作「中間件」或是「中介軟體」,其實 Express 應用程式就是由一連串的 middleware 串連而成: 從 request 進來到 response 回去會經過一系列的流程。 這個流程會按照路由清單由上而下執行。
Thumbnail
※ 什麼是Middleware (中介層)? Middleware 一般翻譯作「中間件」或是「中介軟體」,其實 Express 應用程式就是由一連串的 middleware 串連而成: 從 request 進來到 response 回去會經過一系列的流程。 這個流程會按照路由清單由上而下執行。
Thumbnail
Vue.js是一種基於MVVM的前端JavaScript框架,類似的框架有React、Angular等。 架設環境 安裝Visual Studio Code(https://code.visualstudio.com/) 安裝Node.js(https://nodejs.org/en/
Thumbnail
Vue.js是一種基於MVVM的前端JavaScript框架,類似的框架有React、Angular等。 架設環境 安裝Visual Studio Code(https://code.visualstudio.com/) 安裝Node.js(https://nodejs.org/en/
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
Express 是一個流行的 web 框架,使用 JavsScript 實現,執行在 node 環境上,主要用來寫後端應用。
Thumbnail
當我剛開始接觸這個領域的時候,經常會看到有人在討論: 到底要做前端還是後端工程師呢?後端工程師賺的比前端工程師多?前端工程師轉後端工程師?那前端與後端到底是什麼呢? 這篇文章提供了前端與後端的基本概念並舉例來說明。同時也介紹了前端的三大要素以及後端的運作原理,對於想深入瞭解前後端的讀者會非常有幫助。
Thumbnail
當我剛開始接觸這個領域的時候,經常會看到有人在討論: 到底要做前端還是後端工程師呢?後端工程師賺的比前端工程師多?前端工程師轉後端工程師?那前端與後端到底是什麼呢? 這篇文章提供了前端與後端的基本概念並舉例來說明。同時也介紹了前端的三大要素以及後端的運作原理,對於想深入瞭解前後端的讀者會非常有幫助。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News