2012-03-07 78 views
3

大家好,我是Express + NodeJS的新手。我来自Java,并试图赶上节点,所以请温柔,如果我问一些基本问题(我花了过去2天赶上这东西)Express + NodeJS文档

我的问题是围绕文档。

所以,当我翻阅了一些目前在快递网站,我看到的例子以下

app.get('/users/:id?', function(req, res, next){ 
...... 
}); 

有时

app.get('/users/:id?', function(req, res){ 
...... 
}); 

哪里是为我确定有多少PARAMATERS进入文档功能??首先是req,res和next,然后它有req和res。

第二个问题:请求和响应对象上可用的文档以及作为框架一部分提供的其他方法的文档在哪里?

我抬头看这里的文档http://expressjs.com/guide.html#req.header(),但我无法想象这是整个文档,因为我注意到在本文档中没有的示例使用的方法。

有人能指点我最常用的文档为express + nodeJS开发吗?如果您可以在此列出所有链接,我将非常感激!

回答

3

第一个问题:你需要放慢一分钟。除了Java之外,您还有使用其他语言的经验吗? Javascript没有方法签名,就像你从Java中知道的一样。下面是一个简单的例子:

function foo(bar, baz, qux) { 
    var result = bar + baz; 
    if(qux) { 
     result += qux; 
    } 
    return result; 
} 

foo(1, 2); 
// => 3 
foo(1, 2, 3); 
// => 6 

这是一个人为的例子,但它表明,你可以声明一个函数,它接受3个参数,并且只能使用其中的两个。实际上,它可以直接使用arguments,甚至可以接受以上的参数,而不是在函数声明中指定!

function bar(foo) { 
    if(arguments.length > 1) { 
     var baz = arguments[1]; 
     return foo + baz; 
    } 
    return foo; 
} 

bar(2); 
// => 2 
bar(2, 4); 
// => 6 

反正,总之,你的路由处理function(req, res, next) {}将始终与reqresnext称为 - 但它只是可能是你并不需要的情况下next(因为你永远不会通过控制,也许),所以你省略它(它仍然是那里,在你的arguments对象,只是没有作为next范围)。有些人认为这很sl,,有些则认为它很简洁。

第二个问题:这里是node.js docs,http.ServerRequest,http.ServerResponse。您已经知道快递指南。

+0

谢谢Linus,我在阅读JavaScript之前完全潜入节点。感谢你的帮助。 – Hans 2012-03-08 21:20:31

3

JavaScript对函数所需的参数数量很宽松。如果一个函数需要两个参数,你仍然可以传递五个参数 - 你传递的前两个参数将使用命名参数,其他参数只能通过arguments对象使用。 (同样,如果您编写的函数需要三个参数,则调用者仍然只能传递两个参数,而第三个参数的值将为undefined。)

所以基本上,这个函数总是会得到三个参数,但很多时候你不打算使用next延续,所以你可以把它关掉,JavaScript会默默地吞下它。

至于文档,该指南是Express的官方文档。 Node.js的文档是at nodejs.org。 Express的模块通常基于它们的vanilla Node等价物(例如,服务器基于Node的http.Server)。