【问题标题】:ES6 Module loader to resolve symbolic references用于解析符号引用的 ES6 模块加载器
【发布时间】:2018-03-07 12:14:15
【问题描述】:

我们正在尝试创建一个 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。我们尝试了其他基于继承的方法,但得到了类似的结果。

¿有人可以就如何解决这个问题提供一些见解吗?提前致谢。

【问题讨论】:

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


    【解决方案1】:

    加载器是单独的构建,所以我认为您需要 BrowserESModuleLoader.resolve 和 BrowserESModuleLoader.instantiate。

    最好直接派生浏览器 ES 模块加载器代码本身,并对其进行调整以直接处理这些类型的说明符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 2014-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2017-03-10
      • 2020-08-16
      相关资源
      最近更新 更多