我正在尝试分解一个非常大的JavaScript文件。在此文件中,我们具有类的层次结构,其中包含许多根类的子级。但是,根类具有一个带有switch语句的函数,该函数根据参数返回其子类之一的另一个对象。看起来像这样:
class RootClass {
static FromArg(arg) {
switch (arg.Type) {
case FirstType:
return new FirstSubclass()
case SecondType:
return new SecondSubclass()
...
}
}
}
我将子类保留在其他JavaScript文件中。他们看起来像这样:
class FirstSubclass extends RootClass {
...
}
当它们被保存在一个JS文件中时,这很好用,因为所有内容都在一个文件中定义。但是,当我尝试将其分解并从外部引用两个JS文件时,我遇到了一个问题。我无法先用根类加载JS文件,因为现在未定义子类。我也不能先用子类加载JS文件,因为然后没有定义它们继承的根类。是否有技巧将这两个文件都加载到html页面中,就像它们仍在单个JavaScript文件中一样?
编辑: Azure indexer问题不能解决我的问题,因为我没有尝试将JS文件导出到另一个JS文件,但是我正在寻找一种加载多个JS文件的方法将JS文件转换为HTML文件,就好像它们在一页中一样。
答案 0 :(得分:1)
考虑将工厂模式与根类分开。像这样的东西:
class RootClassFactory {
static ObjectFromArg(arg) {
switch (arg.Type) {
case FirstType:
return new FirstSubclass()
case SecondType:
return new SecondSubclass()
...
}
}
}
class RootClass {
}
class FirstSubclass extends RootClass {
...
}
然后按依赖关系的顺序加载,最后一个工厂类。