[英]How to share the scope within module.exports
在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;
});
}
};
不知道我是否正確,但是如果您只調用一次initialize,就可以執行以下操作:
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;
});
}
};
現在,require將僅被調用一次,因為Node會為您緩存它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.