Express + NodeJS 文档

3

大家好,我是一个对Express + NodeJS不熟悉的新手。我来自Java,现在正在努力学习Node,请大家耐心一些,如果我问一些基础问题的话(我已经花了过去两天时间来了解这些东西)。

我的问题围绕文档展开。

当我查看Express网站上的一些示例时,我看到以下内容:

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

有时候

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

我想知道如何确定函数需要多少个参数?一开始是req,res和next,但后来只有req和res。

第二个问题:在请求和响应对象以及框架中可用的其他方法上,文档在哪里?

我查阅了这里的文档 http://expressjs.com/guide.html#req.header,但我不能想象这是完整的文档,因为我注意到示例中使用的方法并未出现在该文档中。

有人能指向Express + Node.js开发中最常用的文档吗?如果您能在此处列出所有链接,我将非常感激!

2个回答

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 作用域)。有些人认为这是懒散的,而另一些人则认为这很简洁。
第二个问题:这是 node.js 文档http.ServerRequesthttp.ServerResponse。您已经了解了 Express 指南。

谢谢Linus,我在完全投入Node之前正在研究JavaScript。感谢你的帮助。 - Hans

3

JavaScript对于函数所需参数的数量比较宽松。如果一个函数需要两个参数,你仍然可以传递五个参数——你传递的前两个将进入命名参数,其余的只能通过arguments对象访问。(同样地,如果你编写一个需要三个参数的函数,调用者仍然可以只传递两个参数,第三个参数将具有值undefined。)

因此,基本上函数总是会得到三个参数,但很多时候你并不打算使用next继续执行,所以你可以省略它,JavaScript会默默地忽略它。

至于文档,那个指南是Express的官方文档。Node.js的文档在nodejs.org。Express的模块通常基于它们的原始Node等效模块(例如,服务器基于Node的http.Server)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接