在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;
});
}
};
答案 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会为你缓存它。