功能参数无处不在?

时间:2014-08-20 19:17:00

标签: javascript node.js express

我刚刚开始使用NodeJS,我发现自己对代码如

感到困惑
app.get('/home', function(req, res) {
    // req and res are objects
})

我经常看到这些类型的函数调用,其中匿名函数中的参数似乎无处不在,但其中包含各种属性和/或方法?

2 个答案:

答案 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)有点倾听。

因此reqresrequestresponse的简称,并且是从request事件传递的。

然后表达添加了更多找到herehere的方法/属性。


如果您想查看.get()的代码,请参阅here