通过闭包时将大模块分成较小的模块

时间:2019-05-02 13:08:45

标签: javascript node.js closures

我有一个像这样的模块。

//a require block
const requires = require('requires');
let envSpecificVar = ""

// env specific variable set
if(envCheck()){
    envSpecificVar = "env"
}

module.exports = function(Model){
    Model.func1 = function(data,cb){
    //do some things
    }

    Model.func2 = function(data,cb){
    //do some things
    }

    Model.func3 = function(data,cb){
    //do some things
    }
}

现在,我想将其分为多个文件。我是这样的:

index.js

module.exports = function(Model){
    require('./func1').call(this,Model);
    require('./func2').call(this,Model);
}

fun1.js

module.exports = function (Model) {
    Model.func1 = function (data, cb) {
        //do some things
    }
}

以此类推。我这样称呼

const bFiles = require('./brokenFiles');
.
.
bFiles.call(this, Model);

但是我知道我只是传递this上下文,并且无法访问闭包。

但是我想完全做到这一点。因为在主要js文件中设置了奇怪的env变量。 (我无法更改)

这是MCVE。随时要求更多信息或将其标记为重复。

1 个答案:

答案 0 :(得分:0)

您可以创建包含所有配置的另一个模块:

  module.exports = { 
    envSpecificVar: ""
  };

然后,您可以从所有其他模块中导入它。