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

标签 javascript node.js asynchronous express chaining

就像其他人一样,我似乎已经开始尝试使用 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/

相关文章:

javascript - 在一个js中加载jQuery,然后执行一个依赖于它的脚本

bash - 安装 Node 时,我收到有关我的路径的提示

node.js - 触发配置单元查询并在UI上显示增量数据

node.js - 防止 require(...) 在父目录中查找模块

c++ std::async 字面上异步关于任务的线程分配

listview - 如何在 Flutter 中构建动态列表?

ios - 在分离的线程问题中带有 block 的异步 FB 请求

c# - 单击按钮后为我的表选择一个类? (HTML 表格)

javascript - Angular.JS ng-repeat 分解字符串

javascript - 如何在表单中的输入类型 ="file"中添加图像并在同一表单上提交它们后生成缩略图