首页 文章

如何在运行时将模块添加到webpack

提问于
浏览
0

假设webpack有内部缓存映射来存储获取的模块,具有以下类型(我从未读过webpack源,所以这是基于我的假设)

Exports {
  [key: string]: any
}

CacheMap: {
  [modulePath: string]: Exports
}

问题是:如何使用此映射,并从代码中添加动态模块,因此我可以从代码的其他部分请求它 . 例

webpack.addToCache(moduleId, {
  default: function defaultExport() {},
  namedExport: function namedExport() {}
});

从捆绑的其他部分:

import MyDynamicModule, {namedExport} from 'moduleId';

1 回答

  • 1

    我们做类似的事情,但不是通过webpack .

    我们通过“注册表”导入动态模块,该注册表传递到我们的应用程序,其中注册表只是一个JS Map ,我们在 Map 中将值设置为我们想要的不同导入类型 .

    在您的情况下,您可以拥有一个包含对象数组的注册表,其中每个对象代表一个自定义类型 . 您可以通过字符串名称或id或其他来识别它们 . 像这样的东西:

    import foo, {bar} from 'FooBar';
    const registry = {
      Foo: {componentType: foo, componentName:'Foo'},
      Bar: {componentType: bar, componentName:'Bar'} 
    }
    export registry
    

    所以现在在您的应用程序中,您可以导入注册表并引用这些类型作为registry.Foo和registry.Bar,您知道'registry.Foo.componentType'是真正的导入类型 .

相关问题