【发布时间】:2014-07-28 18:32:29
【问题描述】:
我已将我的路线分成不同的模块。但是,仍然存在大量重复。是否有一些关于如何从路由中提取代码的良好实践和约定?
我有许多看起来像这样的路线(Express 4.x):
router.get('/:something', function(req, res, next) {
manipulate(something);
Model.findOne( ..., function (err, model) {
doSomethingInterestingWith(model, function(err, model) {
res.render('template', { something: model} );
});
});
});
router.post('/:something', function(req, res, next) {
manipulate(something);
Model.new( {...}).save( function(err, model) {
res.redirect('/:something');
});
});
这是在一个名为 routes/something.js 的文件中。
我正在尝试将每条路由的内容提取到可以提取到单独文件的函数中的方法。我试图尽可能地简化这个例子,以保持它的可读性,但实际上,在调用渲染之前有相当多的代码。嵌套的回调使我提取的函数非常难看。有想过用Q和promise,但怕用大锤拍苍蝇。
【问题讨论】:
-
苍蝇来了。您始终可以使用函数生成器来填写样板文件。您还可以使用特定于模块的中间件来封装重复的逻辑。 (如果它在整个应用程序中使用,则将两者结合起来;中间件也可以由函数生成。)
标签: node.js express refactoring