Node.js 中间件是NodeJS还是ExpressJS(或类似的)概念?

Node.js 中间件是NodeJS还是ExpressJS(或类似的)概念?,node.js,express,middleware,Node.js,Express,Middleware,我一直看到一些问题来解释NodeJS中的中间件概念,在我看来,这些问题的表述总是很糟糕。人们总是指ExpressJS中间件吗,或者在纯NodeJ中使用这个概念是有实践的吗 我检查了不同的抽象解释和其他解释,我完全理解,这个概念存在于NodeJS和Express之外。我很好奇,是否NodeJS中间件总是被理解为由Express或其他库实现的中间件,或者NodeJS本身具有内置的概念。参考文献中提到的中间件与NodeJS/Express中间件不属于同一类别 在express中,中间件是具有此签名的J

我一直看到一些问题来解释NodeJS中的中间件概念,在我看来,这些问题的表述总是很糟糕。人们总是指ExpressJS中间件吗,或者在纯NodeJ中使用这个概念是有实践的吗


我检查了不同的抽象解释和其他解释,我完全理解,这个概念存在于NodeJS和Express之外。我很好奇,是否NodeJS中间件总是被理解为由Express或其他库实现的中间件,或者NodeJS本身具有内置的概念。

参考文献中提到的中间件与NodeJS/Express中间件不属于同一类别

在express中,中间件是具有此签名的Javascript函数的名称(我认为这是一个夸夸其谈的名称)

function mWare (req, res, next) {
  /* do something useful with req and res */
  next()
}
express框架通常在
.get()
或处理每个特定请求的其他函数之前调用这些express中间件函数中间件的概念来自express框架,而不是nodejs本身。

基于NodeJ构建的其他web框架有其他拦截请求的方法。例如,hapi使用服务器扩展点


您在参考资料中提到的中间件根本不是一回事。它由更大的部件组成。排队、负载平衡、数据库访问、日志记录和缓存系统都是这种中间件的例子。根据该定义,您可以将整个express/nodejs/Linux服务器视为中间件。位于nodejs程序和网络之间的nginx反向代理服务器肯定就是这种中间件。

不,中间件不存在于纯Node.js中(至少在我们习惯于看到它们的方式下),这个概念是在Node.js和Express.js中提出来的。但是没有人禁止您在Node.js中编写自己的实现,您需要从下一个函数开始,它负责所有中间件。这个函数的要点是应该在最后调用它,终止进程或将objects req/res传递给下一个中间件。可以查看实现。

感谢您的回答。但我不确定它是否真的回答了我的问题。我将引用它,以便更好地阐明我的意思——“我完全理解,这个概念存在于NodeJS和Express之外。我很好奇NodeJS中间件是否总是被理解为由Express或其他库实现的中间件,或者NodeJS本身就内置了这个概念。”这也是我的理解