我有一个类似下面的模块
'use strict';
var val = GlobalVariable.someMethod();
...
...
module.exports = myExportedClass;
我用require('./myModule');
来称呼它。但是想知道是否可以动态注入GlobalVariable
。
我尝试过这种方法,虽然我知道这不起作用:)
(function(GlobalVariable) {
require('./myModule');
})(SomeOtherGlobalVariable);
所以它没有,因为模块将在不同的范围内执行。有没有其他方法可以在使用require时传递我自己的GlobalVariable版本。
答案 0 :(得分:1)
是的,可以注射。做类似以下的事情:
module.exports = function(injectedObject) {
return {
doSomething: function() {
return injectedObject.something();
}
}
};
答案 1 :(得分:0)
你可以在需要时将变量作为参数传递
yourvariable="value";
var file = require('./myModule')(yourvariable);
或者可以单独传递,因为文件现在包含module.exports的函数引用
yourvariable="value";
var file = require('./myModule');
file(yourvariable)
您的模块将如下所示:
module.exports = function(yourVaraible) {
yourVaraible.myfunction = function() {
};
return yourvariable;
};