就像其他人一样,看起来,我已经开始使用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 :(得分:1)
Fluent只是构建API的一种方法。实质上,您所做的是返回调用该方法的变量:
app.use = function(){
// do stuff here
return this;
};
然后您可以执行以下操作:
app.use().use().use();
这显然只有在函数通常不返回任何内容时才有效。
所以这取决于你正在做什么。如果你真的想用流畅的范例构建你的API,那么请继续,但要确保你的一致性。
如果你不想,那也没关系,你不会破坏任何东西或者让你的代码不那么容易维护,这只是一种风格。 (在jQuery中它运行得特别好,因为几乎没有任何jQuery对象的方法需要返回数据)