通过构造函数使用require或Pass对象加载模块

时间:2014-09-25 11:40:03

标签: javascript node.js express

我正在用nodejs编写服务器端应用程序。我是这个平台的新手所以请耐心等待。 首先是我的申请结构:

enter image description here

除此之外,还有一个与{app}目录并行的index.js

现在,如果我想访问foo / bar目录中的controller.js,请访问logger.jsdb.js,然后我必须写require('../../logger.js')。我担心的是,如果这个目录结构继续增加,那么require调用将充满'../../../'个丑陋的位。为了纠正这个问题,我想从每个文件中导出一个函数,它将获取所需的所有对象,而不是编写单独的需求。例如我的/foo/bar/routes.js

function routes(router,logger,controller){
    //This is express.router()
    router.get('/a/:b', function(req, res, next) {
        var b = req.params.b;
        controller.getAByB(b,function(error,result){
            if(!error){
                logger.debug('it is working');
                //other processing
            }
        });

    });
}


module.exports.routes = routes; 

以类似的方式我会制作其他文件,例如:/foo/bar/controller.js

module.exports = function(logger,db,config){

    return {
        getAByB : function(b,cb){
            logger.log(b);
            cb(undefined,'someting');
        },


        getName : function(cb){
             db.fetch(function(res){
                 cb(res)
             });
        }
    }
}

这有意义吗?如果您发现更多可能有用的东西请建议。这种方法也会使单元测试的写入更难(只是因为你知道我以前从未在js中编写单元测试)

0 个答案:

没有答案