我正在开发一个包含游戏引擎的Node.js应用程序,我的引擎基本上都有这种模式:
A.js
var B = require('./B');
var A = module.exports = function () {
this.b = new B;
console.log(B.staticBar)
};
A.staticFoo = 'foo';
B.js
var A = require('./A');
var B = module.exports = function () {
console.log(A.staticFoo);
};
B.staticBar = 'bar';
所以我希望A.jaticFoo可以在A.js中访问,而B.staticBar可以在A.js中访问。 知道怎么做吗?
由于
编辑:实际上我的静态变量是配置值,所以另一种解决方案是将它们分组为 config.js 文件,并在每个其他文件中要求该文件,但我发现它更优雅将配置变量直接定义为相关类的静态成员。希望足够清楚;)答案 0 :(得分:0)
我建议将您的静态状态分成第三个模块......通过将状态与模块分离,您可以独立操作。
//state.js - changed by other modules...
module.exports = {
staticFoo: null,
staticBar: null
};
//a.js
var state = require('./state');
exports = module.exports = fnA;
...
function fnA() {
console.log(state.staticBar);
}
//b.js
var state = require('./state');
exports = module.exports = fnB;
...
function fnB() {
console.log(state.staticFoo);
}
另一个例子提到了一些类似于依赖注入的东西...鉴于模块在JS中的工作方式,以及你可以覆盖使用proxyquire等进行测试,我倾向于更喜欢简单的需求结构而不是在JS中处理DI / IoC因为它弄乱了你的项目代码。
我也喜欢做我的要求,然后我的导出,然后是该模块中的任何方法,通常只是模块中的一个方法。