gpt4 book ai didi

node.js - ExpressJS 中间件请求、资源、下一个范围

转载 作者:搜寻专家 更新时间:2023-10-31 22:39:22 24 4
gpt4 key购买 nike

在研究了一些中间件之后,我还有一个问题。

看看下面的工作设置,它只是将 do it 函数附加到 req 对象,这样我们就可以在任何路由中调用它,就像 req.doit()

但是req, res, next 是从哪里来的呢?,我从来没有传递过它们,我更好奇它是如何工作的,因为匿名函数 (2.) 被另一个函数 (1.) 包围,我什至可以传递参数。

中间件测试.js:

var test = function(options){ //1.)
return function(req, res, next) { //2.)
req.doit = function() {
console.log('doit')
}
next();
}
}
module.exports = test;

应用程序.js:

...
var myMiddleware = require('./MiddlewareTest.js')
app.use(myMiddleware())
...

欢迎任何加深我知识的建议:)

~马克

最佳答案

记住函数是 JS 中的对象,因此它们可以像任何其他对象一样传递和返回。

当您告诉 express 使用您的中间件时,您正在调用 myMiddleWare 函数:

app.use(myMiddleWare());

此调用返回标记为 \\2. 的匿名函数。然后,Express.js 将在处理请求时将其作为中间件堆栈的一部分进行调用,为其提供 reqresnext 参数。

您始终可以通过检查 arguments 对象来查看哪些参数被传递给函数。 (即 console.log(arguments));

关于node.js - ExpressJS 中间件请求、资源、下一个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18333057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com