CommonJS 模块 - 导出 returns 带参数的函数
CommonJS Modules - Exporting a function that returns a function with arguments
在此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();
};
我的问题是,为什么要导出 returns 带参数的函数?前者有什么我不知道的好处吗?
rendr 使用 Express 风格的中间件。
按照惯例,Express 中的第三方中间件不会作为实际中间件提供。相反,它们作为基于选项对象参数创建中间件的函数提供。
但是,由于这里没有提供选项,因此省略。
但是,为了遵循周围库的约定,returns 中间件函数需要是工厂函数。所以这就是为什么它在这里被包裹起来的原因。
在此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();
};
我的问题是,为什么要导出 returns 带参数的函数?前者有什么我不知道的好处吗?
rendr 使用 Express 风格的中间件。
按照惯例,Express 中的第三方中间件不会作为实际中间件提供。相反,它们作为基于选项对象参数创建中间件的函数提供。
但是,由于这里没有提供选项,因此省略。
但是,为了遵循周围库的约定,returns 中间件函数需要是工厂函数。所以这就是为什么它在这里被包裹起来的原因。