中间件是 NodeJS 还是 ExpressJS(或类似的)概念?
Is middleware a NodeJS or ExpressJS (or similar) concept?
我一直看到解释 NodeJS 中的中间件概念的问题,在我看来,它们的表述总是很糟糕。人们总是指 ExpressJS 中间件,还是有在纯 NodeJS 中使用这个概念的实践?
我检查了不同的抽象解释 here and here 等,我完全理解,这个概念存在于 NodeJS 和 Express 之外。我很好奇 NodeJS 中间件是否总是被理解为由 Express 或其他库实现的中间件,或者 NodeJS 本身具有内置的概念。
您的参考资料中提到的中间件与 nodejs / express 中间件不是同一类别。
在 express 中,中间件是具有此签名的 Javascript 函数的名称(在我看来是一个夸张的名称)。
function mWare (req, res, next) {
/* do something useful with req and res */
next()
}
这些 express 中间件函数由 express 框架调用,通常在 .get()
或其他处理每个特定请求的函数之前调用。 这个中间件的概念来自于express框架,而不是nodejs本身。
其他基于nodejs构建的web框架还有其他拦截请求的方式。例如,hapi 使用服务器扩展点。
您的参考资料中提到的中间件根本不是一回事。它由更大的组件组成。队列、负载平衡、数据库访问、日志记录和缓存系统都是这种中间件的例子。根据该定义,您可以假设整个 express / nodejs / Linux 服务器都是中间件。位于 nodejs 程序和网络之间的 nginx 反向代理服务器绝对是那种中间件。
不,中间件不存在于纯粹的 Node.js 中(至少以我们习惯看到它们的方式),这个概念出现在 Node.js 和 Express.js 中。但是没有人禁止你在Node.js中编写自己的实现,你需要从下一个函数开始,它负责所有的中间件。这个函数的要点是它应该在最后调用并终止进程或将对象 req/res 传递给下一个中间件。实现可以看here.
我一直看到解释 NodeJS 中的中间件概念的问题,在我看来,它们的表述总是很糟糕。人们总是指 ExpressJS 中间件,还是有在纯 NodeJS 中使用这个概念的实践?
我检查了不同的抽象解释 here and here 等,我完全理解,这个概念存在于 NodeJS 和 Express 之外。我很好奇 NodeJS 中间件是否总是被理解为由 Express 或其他库实现的中间件,或者 NodeJS 本身具有内置的概念。
您的参考资料中提到的中间件与 nodejs / express 中间件不是同一类别。
在 express 中,中间件是具有此签名的 Javascript 函数的名称(在我看来是一个夸张的名称)。
function mWare (req, res, next) {
/* do something useful with req and res */
next()
}
这些 express 中间件函数由 express 框架调用,通常在 .get()
或其他处理每个特定请求的函数之前调用。 这个中间件的概念来自于express框架,而不是nodejs本身。
其他基于nodejs构建的web框架还有其他拦截请求的方式。例如,hapi 使用服务器扩展点。
您的参考资料中提到的中间件根本不是一回事。它由更大的组件组成。队列、负载平衡、数据库访问、日志记录和缓存系统都是这种中间件的例子。根据该定义,您可以假设整个 express / nodejs / Linux 服务器都是中间件。位于 nodejs 程序和网络之间的 nginx 反向代理服务器绝对是那种中间件。
不,中间件不存在于纯粹的 Node.js 中(至少以我们习惯看到它们的方式),这个概念出现在 Node.js 和 Express.js 中。但是没有人禁止你在Node.js中编写自己的实现,你需要从下一个函数开始,它负责所有的中间件。这个函数的要点是它应该在最后调用并终止进程或将对象 req/res 传递给下一个中间件。实现可以看here.