CommonJS的模块 - 导出返回与参数的函数的函数(CommonJS Modules - Exp

2019-10-23 00:16发布

在这种rendr -会话例如,有一个明确的中间件模块...

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();
};

我的问题是,你为什么要导出的返回与参数的函数的功能? 是否有某种利益前,我不知道的?

Answer 1:

rendr使用快车式中间件。

按照惯例,在快递第三方中间件不作为实际中间件提供的。 相反,他们提供的是创建基于选择对象参数的中间件功能。

然而,由于没有在这里提供的选项,它省略。

但尽管如此,为了追随周边库的公约,它需要一个工厂函数返回一个中间件功能。 所以这就是为什么它是在这里包裹起来的方式。



文章来源: CommonJS Modules - Exporting a function that returns a function with arguments