加载多个JS文件就好像它们是一个文件一样?

时间:2019-06-27 18:14:59

标签: javascript

我正在尝试分解一个非常大的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文件,就好像它们在一页中一样。

1 个答案:

答案 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 {
  ...
}

然后按依赖关系的顺序加载,最后一个工厂类。

https://en.wikipedia.org/wiki/Factory_method_pattern