如何以干燥的方式编写Node.js Web服务?

时间:2012-05-16 22:20:24

标签: javascript node.js dry

我正在编写一堆Web服务,这些服务都有一些共同的模式。例如,他们都共享相同的要求

var x = require(...);
var y = require(...);

进行类似的身份验证

var auth = express.basicAuth(...);
server.use(auth); 

并有类似的错误消息。

server.error(function(err, req, res, next){
    ...
});

有没有办法在一个共同的地方写上述内容,这样如果有任何改变,我可以做一次改变而不是五或六次?

1 个答案:

答案 0 :(得分:2)

绝对。您可以创建一个模块,该模块将返回一个基本http服务器,该服务器实现所有服务通用的设置/方法。从那里你可以只需要该模块,并添加其他服务方法。

该模块看起来像:

var express = require('express');
var app = express.createServer();

//  Configure

//  Common Functionality
app.error(function(err, req, res, next){
    ...
});

exports.app = app;

然后你就可以像这样使用这个模块:

var service = require('./service-base').app;

service.get('/users', function(req, res) {
    //  get and return users
});

service.listen(1234);

如果您需要公开模块中的其他项目,您可以轻松地在服务实现文件中使用它们。