Runtime 接入
目前 Module Federation 提供了两种注册模块和加载模块的方式:
-
一种是在构建插件中声明(一般是在
module-federation.config.ts文件中声明) -
另一种方式是直接通过
runtime的 api 进行模块注册和加载。
两种模式并不冲突可结合使用。你可以根据你的实际场景灵活选取模块注册方式和时机
运行时注册模块和构建配置注册模块的区别如下:
若使用构建插件,项目启动时将自动创建 ModuleFederation 实例并存储于内存中。此时可直接调用 API,API 会自动从内存中获取构建运行时创建的 ModuleFederation 实例。
若未使用构建插件,则需手动创建 ModuleFederation 实例,之后调用相应 API。
- 什么是
ModuleFederation实例 ?
ModuleFederation 实例是 ModuleFederation 类的实例,它包含了 ModuleFederation 运行时的所有功能。
你可以在控制台输入
__FEDERATION__.__INSTANCES__来查看已经创建好的实例。
安装
-
以下
Federation Runtime示例我们均展示脱离特定框架如 Modern.js 的 case, 所以 API 将均从初始@module-federation/enhanced/runtime包中导出。 -
如果你的项目是 Modern.js 项目且使用
@module-federation/modern-js,运行时应该从@module-federation/modern-js/runtime中导出运行时 API。这样能保证插件和运行时使用的是同一个运行时实例,保证模块加载正常 -
如果你的项目是 Modern.js 项目但是没有使用
@module-federation/modern-js,则应当从@module-federation/enhanced/runtime导出 runtime API。但是我们推荐你使用@module-federation/modern-js进行模块注册和加载,这将使你享受到更多和框架结合的能力。