我們用一個實際的例子來看看中間件是如何運作的。假設我們有一個非常簡單的Express應用,它只有兩個中間件函數:
const express = require('express');
const app = express();app.use((req, res, next) => {console.log('第一個中間件');next();
});app.use((req, res, next) => {console.log('第二個中間件');res.send('Hello World!');
});app.listen(3000, () => {console.log('服務器運行在3000端口');
});
在這個例子中,當一個請求到達服務器時,首先會觸發第一個中間件,打印出“第一個中間件”。然后,通過調用next()
函數,控制權傳遞給下一個中間件,打印出“第二個中間件”,并發送一個響應給客戶端。
這種鏈式調用的模式使得中間件可以按需添加或移除,而不會影響到其他部分的代碼。這就像是拼裝積木一樣,你可以根據需要選擇不同的積木塊(中間件),構建出符合你需求的應用程序。
此外,中間件還可以根據特定的條件來決定是否執行。例如,你可以創建一個只在生產環境中運行的日志記錄中間件,或者一個僅在請求來自特定IP地址時才激活的安全檢查中間件。這種靈活性使得中間件成為了Express框架的核心特性之一。