javascript - CommonJS 模块 - 导出返回带参数的函数的函数

标签 javascript node.js commonjs rendr

在此rendr - sessions例如,有一个快速中间件模块...

module.exports = function incrementCounter() {
  return function incrementCounter(req, res, next) {
    var app = req.rendrApp
      , count = app.get('session').count || 0;
    req.updateSession('count', count + 1);
    next();
  };
};

你不能用下面的方法达到同样的效果吗?

module.exports = function incrementCounter(req, res, next) {
  var app = req.rendrAp
  , count = app.get('session').count || 0;
  req.updateSession('count', count + 1);
  next();
};

我的问题是,为什么要导出一个返回带参数函数的函数?前者有什么我不知道的好处吗?

最佳答案

rendr 使用 Express 风格的中间件。

按照惯例,Express 中的第三方中间件并不作为实际的中间件提供。相反,它们作为函数提供,基于选项对象参数创建中间件。

但是,由于此处没有提供选项,因此将其省略。

但是,为了遵循周围库的约定,它需要是一个返回中间件函数的工厂函数。这就是为什么它在这里这样包装的原因。

关于javascript - CommonJS 模块 - 导出返回带参数的函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30066527/

相关文章:

javascript - 使用 jQuery 计算各节中单选按钮的总和

javascript - NativeScript 动态 map 标记

javascript - 正则表达式不匹配所有事件

node.js - 如何订购一个 firebase 集合,然后向每个文档写入一些内容?

node.js - 如何在openshift服务器中生成apns证书

javascript - CommonJS 模块(使用 Nodejs),奇怪

javascript - iphone 移动 safari 上的 javascript 是否支持 xpath?

node.js - 在 Cookie 中存储 Express Session

typescript - Rollupjs 不捆绑所有文件

javascript - Node.js 和模块作用域 : Most Efficient Way to Read Files into Memory