Node.js全局生效的中间件

目录

[1. 目录结构](#1. 目录结构)

[2. 代码实现](#2. 代码实现)

[2.1 安装Express](#2.1 安装Express)

[2.2 app.js - 主文件](#2.2 app.js - 主文件)

[2.3 globalMiddleware.js - 全局中间件](#2.3 globalMiddleware.js - 全局中间件)

[3. 程序运行结果](#3. 程序运行结果)

[4. 总结](#4. 总结)


在Node.js的Express框架中,全局生效的中间件是指应用程序启动后,对所有请求都有效的中间件。它通常用于日志记录、权限验证、请求解析等场景。下面我们通过代码示例来详细介绍如何实现全局生效的中间件。


1. 目录结构

bash 复制代码
/your-project
  ├── app.js                # 主文件,启动应用
  ├── middleware
  │   └── globalMiddleware.js # 全局生效的中间件
  └── package.json          # 项目依赖管理文件

2. 代码实现

2.1 安装Express

如果你还没有安装Express,请先执行以下命令安装:

bash 复制代码
npm init -y
npm install express

2.2 app.js - 主文件

app.js是应用的主入口,我们将在这里引入全局中间件并注册路由。

javascript 复制代码
// 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。

javascript 复制代码
// 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. 程序运行结果

启动应用:

bash 复制代码
node app.js

然后访问以下地址:

  • 访问http://localhost:3000/时,终端输出:

    javascript 复制代码
    [2025-04-01T12:00:00.000Z] GET /

    页面显示:

    javascript 复制代码
    <h1>Welcome to the Home Page</h1>
  • 访问http://localhost:3000/about时,终端输出:

    javascript 复制代码
    [2025-04-01T12:00:05.000Z] GET /about

    页面显示:

    javascript 复制代码
    <h1>Welcome to the About Page</h1>

4. 总结

  • 全局中间件适用于所有请求,不需要在每个路由单独调用。

  • 通过app.use(middleware)可以注册全局中间件,所有请求都会先经过这个中间件。

  • 本示例中的全局中间件用于记录请求日志,但它也可以用于权限验证、请求体解析等更多场景。

希望本教程能帮助你理解Node.js的全局中间件!

相关推荐
蚂蚁不吃土&8 小时前
vscode + chinese(simplified)
ide·vscode·编辑器
ZC跨境爬虫9 小时前
跟着MDN学HTML_day_48:(Node接口)
前端·javascript·ui·html·音视频
kyriewen12 小时前
半夜三点线上崩了,AI替我背了锅——用AI排错,五分钟定位三年老bug
前端·javascript·ai编程
王木风12 小时前
终端里的编程副驾:DeepSeek-TUI-项目深度拆解,实测与原理分析
linux·运维·人工智能·rust·node.js
AI_paid_community13 小时前
98.5k Star!GitHub官方开源的这个工具,正在把"vibe coding"扫进历史的垃圾桶
javascript·claude
AI_paid_community13 小时前
用 Claude Code 写了一年代码,装了这 18 个 Skills 之后,我才知道自己一直在"氛围编程"
javascript·面试
Cloud_Shy61814 小时前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(附录 B 高级 VS Code 功能)
vscode·python·jupyter·数据分析·excel
隔壁老王111114 小时前
浅谈JavaScript内存管理
javascript
吹牛不交税14 小时前
tree-transfer-vue3 前端插件安装问题解决(--legacy-peer-deps)(其他插件可考虑)适用
前端·javascript·vue.js