我怎样才能以DRY的方式编写Node.js Web服务?

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

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

做类似的authentication

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

并有类似的错误信息。

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

有没有办法在一个共同的地方写上述内容,如果有什么变化,我可以做一个单一的变化,而不是五六个?

绝对。 您可以创build一个模块,它将返回一个基本的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); 

如果您需要公开模块中的其他项目,您也可以轻松地将其在服务实现文件中提供。