我应该在node.js和Express中链接方法和函数吗?

我应该在node.js和Express中链接方法和函数吗?

问题描述:

就像其他人一样,看起来,我已经开始使用node.js和Express框架。我应该在node.js和Express中链接方法和函数吗?

虽然我对客户端Javascript有很大的信心,当然很依赖JQuery,但是我对node.js的研究却暴露了我对JavaScript的实际工作方式缺乏正确理解。因此,这个问题。

每个教程中,我所看到的,包括那些由Holowaychuk先生本人,做这样的事情:

var express = require('express'), 
    app = express(); 

app.use(express.methodOverride()); 
app.use(express.cookieParser()); 
app.use('/images', express.static(__dirname + '/public/images')); 
app.get('/', <do something>); 
app.get('/:something', <do something else>) 
app.listen(3000); 

如果我写这样的事情对客户端Javascript我会被诱惑参考app对象只是一次,并链接任何功能或方法,从而产生此:

var express = require('express'), 
    app = express(); 

app.use(express.methodOverride()) 
    .use(express.cookieParser()) 
    .use('/images', express.static(__dirname + '/public/images')) 
    .get('/', <do something>) 
    .get('/:something', <do something else>) 
    .listen(3000); 

所以我的问题是:这两个功能不同?我是否冒着不同寻常之神的不安?

任何关于教程的帮助和链接都称为'仅仅因为你已经玩过JQuery并不意味着你理解Javascript的任何东西'都会被感激地收到。

+0

只要'use','get'和'listen'返回原来的'app',那就没问题。链接工作与jQuery的原因是因为jQuery方法总是(在大多数情况下)返回原始选定元素集合 – Ian 2013-05-11 18:38:35

+0

谢谢@Ian。这是有道理的,链接版本似乎和unlink一样工作。我仍然怀疑这样一个事实,即我看过的许多node.js/Express教程和示例都没有使用链接。 – 2013-05-11 18:53:43

Fluent只是构建API的一种方法。从本质上说,你要做的就是回报这是调用该方法的变量:

app.use = function(){ 
    // do stuff here 
    return this; 
}; 

然后你就可以做到以下几点:

app.use().use().use(); 

当函数通常不会返回任何东西,这显然只能。

所以这取决于你在做什么。如果你真的想用流利模式来构建你的API,那么请继续,但要确保你对它一致。

如果你不想,也没关系,你不会破坏任何东西,或者让你的代码更少维护,这只是一种风格。 (在jQuery中效果特别好,因为jQuery对象上的任何方法都不需要返回数据)