我应该在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的任何东西'都会被感激地收到。
答
Fluent只是构建API的一种方法。从本质上说,你要做的就是回报这是调用该方法的变量:
app.use = function(){
// do stuff here
return this;
};
然后你就可以做到以下几点:
app.use().use().use();
当函数通常不会返回任何东西,这显然只能。
所以这取决于你在做什么。如果你真的想用流利模式来构建你的API,那么请继续,但要确保你对它一致。
如果你不想,也没关系,你不会破坏任何东西,或者让你的代码更少维护,这只是一种风格。 (在jQuery中效果特别好,因为jQuery对象上的任何方法都不需要返回数据)
只要'use','get'和'listen'返回原来的'app',那就没问题。链接工作与jQuery的原因是因为jQuery方法总是(在大多数情况下)返回原始选定元素集合 – Ian 2013-05-11 18:38:35
谢谢@Ian。这是有道理的,链接版本似乎和unlink一样工作。我仍然怀疑这样一个事实,即我看过的许多node.js/Express教程和示例都没有使用链接。 – 2013-05-11 18:53:43