【问题标题】:How can I write Node.js web services in a DRY manner?如何以 DRY 方式编写 Node.js Web 服务?
【发布时间】:2012-05-16 22:20:24
【问题描述】:

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

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

做类似的认证

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

并且有类似的错误信息。

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

有没有什么方法可以将上面的内容写在一个共同的地方,这样如果有任何变化,我可以只做一个更改而不是五个或六个?

【问题讨论】:

    标签: javascript node.js dry


    【解决方案1】:

    当然。您可以创建一个模块,该模块将返回一个基本 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);
    

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

    【讨论】:

    • 谢谢蒂莫西。最后一块拼图是需要。有没有办法集中化 var blah = require(...) ?
    • 我不确定你的意思。在我的示例伪代码中,大部分需求可能都在服务库中。然后,您只需要请求服务基础,它应该公开您希望能够自定义的任何内容。您将如何进一步集中化它?
    猜你喜欢
    • 2020-07-11
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多