簡體   English   中英

如何在module.exports中共享作用域

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM