就像其他人一样,我似乎已经开始尝试使用 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 对象上几乎没有任何方法需要返回数据)
关于javascript - 我应该在 Node.js 和 Express 中链接方法和函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16500468/