目录
1. 目录结构
2. 代码实现
2.1 安装Express
2.2 app.js - 主文件
2.3 globalMiddleware.js - 全局中间件
3. 程序运行结果
4. 总结
在Node.js的Express框架中,全局生效的中间件是指应用程序启动后,对所有请求都有效的中间件。它通常用于日志记录、权限验证、请求解析等场景。下面我们通过代码示例来详细介绍如何实现全局生效的中间件。
1. 目录结构
/your-project
├── app.js # 主文件,启动应用
├── middleware
│ └── globalMiddleware.js # 全局生效的中间件
└── package.json # 项目依赖管理文件
2. 代码实现
2.1 安装Express
如果你还没有安装Express,请先执行以下命令安装:
npm init -y
npm install express
2.2 app.js
- 主文件
app.js
是应用的主入口,我们将在这里引入全局中间件并注册路由。
// app.js
const express = require('express');
const app = express();
// 引入全局中间件
const globalMiddleware = require('./middleware/globalMiddleware');
// 使用全局中间件
app.use(globalMiddleware);
// 定义一些测试路由
app.get('/', (req, res) => {
res.send('<h1>Welcome to the Home Page</h1>');
});
app.get('/about', (req, res) => {
res.send('<h1>Welcome to the About Page</h1>');
});
// 监听端口
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
说明:
-
通过
app.use(globalMiddleware)
注册全局中间件,使得所有请求都会先经过该中间件。
2.3 globalMiddleware.js
- 全局中间件
globalMiddleware.js
定义了一个全局生效的中间件,它会记录请求的时间、方法和访问的URL。
// middleware/globalMiddleware.js
const globalMiddleware = (req, res, next) => {
console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
next(); // 继续执行下一个中间件或路由
};
module.exports = globalMiddleware;
说明:
-
这个中间件会在每个请求到达路由之前被调用。
-
new Date().toISOString()
用于记录请求时间,req.method
记录请求方式,req.url
记录访问的路径。 -
next()
用于继续传递请求,否则请求会一直停留在这个中间件里。
3. 程序运行结果
启动应用:
node app.js
然后访问以下地址:
-
访问
http://localhost:3000/
时,终端输出:[2025-04-01T12:00:00.000Z] GET /
页面显示:
<h1>Welcome to the Home Page</h1>
-
访问
http://localhost:3000/about
时,终端输出:[2025-04-01T12:00:05.000Z] GET /about
页面显示:
<h1>Welcome to the About Page</h1>
4. 总结
-
全局中间件适用于所有请求,不需要在每个路由单独调用。
-
通过
app.use(middleware)
可以注册全局中间件,所有请求都会先经过这个中间件。 -
本示例中的全局中间件用于记录请求日志,但它也可以用于权限验证、请求体解析等更多场景。
希望本教程能帮助你理解Node.js的全局中间件!