如何在module.exports

时间:2015-06-14 17:29:58

标签: javascript node.js express

在handler.js内部,我已经导出了2个函数。一个用于initialize()和其他handle()。初始化函数用于根据应用程序设置加载处理程序动态。我在module.exports函数之外共享变量var handler

handler = new Handler(app);新实例已创建分配给共享变量var handler。然后在handle()函数内共享变量var handler。使用

动态require()网络请求时间中的文件并不是一个好主意。因此,在应用程序启动时创建并调用了initialize()方法。

让我知道删除共享变量'handler'

的建议
var handler;

module.exports  = {

    initialize : function (app){
        var Handler = require(path.resolve(app.basedir, app.settings.handler));
        handler = new Handler(app);
    },

    handle : function handle(ctx) {

        var urlToHandle = ctx.url;

         return handler.resolveURL(ctx)
        .then(function (json) {
            ctx.layoutJSON = json;
            return ctx;
        })
        .catch(function (e) {
            throw e;
        });

    }
};

1 个答案:

答案 0 :(得分:0)

不确定我是否得到你的权利,但是如果你只是做一次初始化就可以做到这样的事情:

var app     = require('path-to-a-file-which-return-app');
var Handler = require(path.resolve(app.basedir, app.settings.handler));
var handler = new Handler(app);

module.exports  = {

    handle : function handle(ctx) {

        var urlToHandle = ctx.url;

         return handler.resolveURL(ctx)
        .then(function (json) {
            ctx.layoutJSON = json;
            return ctx;
        })
        .catch(function (e) {
            throw e;
        });

    }
};

现在只需要调用一次,因为Node会为你缓存它。