1

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

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

4

1 回答 1

1

rendr 使用 Express 风格的中间件。

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

但是,由于这里没有要提供的选项,因此将其省略。

但是,为了遵循周围库的约定,它需要是一个返回中间件函数的工厂函数。所以这就是为什么它在这里被包裹起来。

于 2015-05-06T05:36:11.613 回答