Node.js Express.js:快速構建 Web 應用的極簡框架

在先前的章節中,我們學會了如何使用原生的 http 模組建立伺服器。雖然這能深入了解底層,但在實際專案開發中,為了提升效率與可維護性,我們需要更強調擴展性的方案。這就是 Express.js 成為 Node.js 生態系絕對霸主的原因。

為什麼選擇 Express.js?

Express 的核心哲學是 「極簡且不預設立場 (Minimalist and Unopinionated)」

  1. 極致輕量:它在原生 Node.js 之上僅添加了一層開發網頁應用必備的功能,不會讓你的程式變得臃腫。
  2. 強大的路由系統:輕鬆定義 GET, POST, PUT, DELETE 等請求路徑。
  3. 中間件 (Middleware) 機制:像堆積木一樣,自由組合日誌、權限驗證、請求解析等功能。
  4. 工業標準:絕大多數的 Node.js 工作職缺都要求具備 Express 開發經驗。

建立專案與安裝

首先,建立專案資料夾並初始化環境。

mkdir hello-express
cd hello-express
npm init -y

接著透過 NPM 安裝 Express:

npm install express

撰寫第一個 Express 程式

建立一個 app.js 檔案,輸入以下程式碼:

const express = require('express');
const app = express();
const port = 3000;

// 定義首頁路由 (GET 請求)
app.get('/', (req, res) => {
  // res.send 會自動幫你設定 Content-Type 與 Charset
  res.send('你好!歡迎來到 Express 的世界。');
});

// 定義 API 路由
app.get('/api/user', (req, res) => {
  // res.json 會自動進行序列化並傳送 JSON 格式
  res.json({
    id: 1,
    name: 'Mike',
    status: 'Learning Express',
  });
});

app.listen(port, () => {
  console.log(`伺服器正運行在 http://localhost:${port}`);
});

執行方式:node app.js

Express 的核心進化

如果你用過原生 http 模組,你會立刻感受到 Express 的便捷處:

  • 路由簡化:告別繁瑣的 if (req.url === ...) 分支判斷。
  • 自動化回應:以前要手動計算 Content-LengthJSON.stringify,現在一個 res.json()res.send() 搞定一切。
  • 狀態碼管理res.status(404).send('Not Found') 鏈式呼叫非常直覺。

開發工具推薦:Nodemon 或 --watch

開發時,每次修改檔案都要重啟伺服器很累人。

  1. 熱門工具 Nodemonnpm install --save-dev nodemon,接著在 package.json 加入 "dev": "nodemon app.js"
  2. 原生監控 (Node 18.11+):現在 Node.js 內建了監控模式,直接執行:
    node --watch app.js
    

總結

  1. Express 是目前 Node.js Web 開發的實質標準。
  2. 它將複雜的 HTTP 解析流程封裝成簡單、好讀的 API。
  3. 它是理解所有 Node.js 進階框架(如 NestJS)的必經之路。