我正在使用从容器类扩展的类。该类的每个实例本身就是一个容器,但是顶级容器不是该类的实例。
文件1
const Command = require('Command');
class CommandManager {
constuctor () {
this.commands = {};
}
add (object) {
const command = new Command(object);
this.commands[command.name] = command;
}
get (string) {
return this.commands[string];
}
}
文件2
const CommandManager = require("CommandManager");
class Command extends CommandManager {
constructor (object) {
super();
//Other-code
}
// Class Methods
}
在运行时,它应该看起来像这样:
client.commands = new CommandManager();
client.commands.add(object); // Add function also filters down adding to sub elements
或:
const command = client.commands.get(string);
command.add(object);
问题是,这些文件中至少有一个以空对象结尾或未从所需类中定义。我尝试取消其他节点圆形依赖解决方案的尝试没有成功(或者我没有正确理解它们)。
目的是将2个类保留在各自的文件中,我知道我可以通过使用相同的文件来解决此问题(但这在项目中是个例外吗?),我不确定如何(或消费者)会在逻辑上要求它,因为他们位于不同的领域。
那么,我想念哪些方式,以致于我失踪了?
根据Bergi发表的评论:
使CommandManager文件中的require延迟可以延迟模块的加载,并允许在调用之前解决依赖关系。
class CommandManager {
constuctor () {
this.commands = {};
}
add (object) {
const Command = require('Command');
const command = new Command(object);
this.commands[command.name] = command;
}
get (string) {
return this.commands[string];
}
}