ES6模块加载器,用于解析符号引用

时间:2017-09-26 10:11:28

标签: javascript ecmascript-6 es6-modules es6-module-loader

我们正在尝试创建一个ES6加载器,以使用对模块的符号引用,而不是导入句子中形式良好的URI或路径。例如,像这样的导入:

import { foo } from 'com.bussines.platform.utils';

应将符号引用com.bussines.platform.utils解析为真实的uri并继续执行常规加载过程以获取foo

为了实现这一目标,我们正在使用@guybedford开发的es-module-loader polyfill 。因为,我们在浏览器上下文中,我们创建了一个委托给BrowserESModuleLoader的加载器:

class CustomBrowserLoader extends RegisterLoader {

  constructor(Loader) {
    super();
    this.loader = new BrowserESModuleLoader();
  }

  [RegisterLoader.resolve] (key) {
    let uri = Resolve (key)
    return this.loader[RegisterLoader.resolve] (uri); // (1)
  }

  [RegisterLoader.instantiate] (uri) {
    return this.loader[RegisterLoader.instantiate] (uri); // (2)
  }
}

问题是,令人惊讶的是,第(1)和第(2)行的调用找不到所需的方法resolveinstantiate。我们已经尝试了基于继承的其他方法,但得到了类似的结果。

¿有人能提供一些有关如何解决问题的见解吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

加载器是单独的构建,所以我想你会想要BrowserESModuleLoader.resolve和BrowserESModuleLoader.instantiate。

最好直接分叉Browser ES Module Loader代码本身,并使其适应直接处理这些类型的说明符。