深入浅出Node.js中间件机制

我们用一个实际的例子来看看中间件是如何运作的。假设我们有一个非常简单的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框架的核心特性之一。

相关推荐
To_OC1 天前
从 0 到 1:Milvus + 大模型打造私人记忆知识库
人工智能·node.js·llm
孟陬2 天前
介绍 Node.js v22 新增的 `toArray` 方法
node.js·deno·bun
kisloy2 天前
【爬虫入门第10讲】Scrapy 框架深度解析(一):五大组件与中间件
爬虫·scrapy·中间件
卡兹墨2 天前
针对高并发、数据量大的场景,通常会考虑采用分库分表进行优化。在这篇文章,我们重点盘点一下Node.js主流ORM框架的动态分表方案 ...
node.js
行走的陀螺仪2 天前
一次 opencode + OpenPencil MCP 协同解析 .fig 文件的踩坑实录
node.js·figma·mcp·opencode
JasonMa1533 天前
从零搭建一个微信小程序活动管理平台(一):架构设计与技术选型
javascript·微信小程序·node.js
濮水大叔3 天前
NestJS 与 CabloyJS 的 env/config 架构对比:从环境变量到实例级配置
前端·node.js·nestjs
晴天163 天前
AI应用开发(智能体-全栈开发工程师 岗位分析)-Day04
人工智能·中间件
TDengine (老段)3 天前
TDengine Node.js 与 C# 连接器 — Web 服务与 .NET 集成
大数据·数据库·node.js·c#·.net·时序数据库·tdengine
To_OC3 天前
对接大模型流式接口,我被一个 ReadableStream 卡了半小时
前端·node.js·llm