我刚刚开始使用NodeJS,我发现自己对代码如
感到困惑app.get('/home', function(req, res) {
// req and res are objects
})
我经常看到这些类型的函数调用,其中匿名函数中的参数似乎无处不在,但其中包含各种属性和/或方法?
答案 0 :(得分:0)
您正在将一个函数传递给另一个函数,这个
function(req, res) {
}
是一个功能。假设你在被调用的方法中给它一个局部变量名,如b
,那么可以调用该函数。例如, -
app.get = function(a, b) { // <-- assign a function to app.get
b("one", "two"); // <-- and then req would be one, and res would be two.
}
答案 1 :(得分:0)
实际上找到here:
app.listen = function(){
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
如您所见,express()
为this
,并且它被用作createServer
的参数。
您可以找到createServer here的文档:
requestListener是一个自动添加到'request'事件的函数。
然后当您查看request
事件here:
事件:'请求'
function (request, response) { }
每次有请求时都会发出。请注意,可能有多个 每个连接的请求(在保持连接的情况下)。 request是http.IncomingMessage的一个实例,响应是一个 http.ServerResponse的实例。
从技术上讲,每次收到来自浏览器的新请求时都会发出此事件。
这段代码
app.get('/home', function(req, res) {
// req and res are objects
})
对某条路线的请求(check expressjs source code)有点倾听。
因此req
和res
是request
和response
的简称,并且是从request
事件传递的。
如果您想查看.get()
的代码,请参阅here。