Runtime 接入
目前 Module Federation 提供了两种注册模块和加载模块的方式:
-
一种是在构建插件中声明(一般是在
module-federation.config.ts文件中声明) -
另一种方式是直接通过
runtime的 api 进行模块注册和加载。
两种模式并不冲突可结合使用。你可以根据你的实际场景灵活选取模块注册方式和时机
运行时注册模块和构建配置注册模块的区别如下:
若使用构建插件,项目启动时将自动创建 ModuleFederation 实例并存储于内存中。此时可直接调用 API,API 会自动从内存中获取构建运行时创建的 ModuleFederation 实例。
若未使用构建插件,则需手动创建 ModuleFederation 实例,之后调用相应 API。
- 什么是
ModuleFederation实例 ?
ModuleFederation 实例是 ModuleFederation 类的实例,它包含了 ModuleFederation 运行时的所有功能。
你可以在控制台输入
__FEDERATION__.__INSTANCES__来查看已经创建好的实例。
安装
不同项目需要安装和引用不同的 Runtime 入口。大多数项目默认安装 @module-federation/enhanced,并从 @module-federation/enhanced/runtime 引用 Runtime API。Modern.js 项目如果已经使用 Module Federation 插件,应该从对应插件的 /runtime 入口引用 Runtime API,保证框架插件和手动调用的 Runtime 使用同一个实例。
@module-federation/enhanced
Modern.js
如果是 Modern.js v2 项目,请安装 @module-federation/modern-js,并从 @module-federation/modern-js/runtime 引用 Runtime API。
模块注册
模块加载
加载匿名模块
加载具名模块
加载工具函数
继续阅读
- Runtime API:查看
createInstance、loadRemote、registerRemotes等 API。 - Runtime 插件:了解如何扩展运行时加载流程。
- Runtime Hooks:查看插件可使用的生命周期。