Runtime Hooks
beforeInit
SyncWaterfallHook
在 MF 实例初始化之前更新对应 init 配置
- type
init
SyncHook
在 MF 实例初始化后调用
- type
beforeRequest
AsyncWaterfallHook
在解析 remote 路径前调用,对于在查找之前更新某些内容很有用。
- type
afterResolve
AsyncWaterfallHook
在解析 remote 路径后调用,允许修改解析后的内容。
- type
onLoad
AsyncHook
Triggered once a federated module is loaded, allowing access and modification to the exports of the loaded file.
加载 remote 后触发,允许访问和修改已加载文件的导出(exposes)。
- type
beforeInitContainer
AsyncWaterfallHook
在 host(消费者)调用 remoteEntry.init(...) 之前触发,可用于动态改写本次初始化要对齐的共享池(shareScopeKeys/shareScopeMap)、以及传给 remote 的 remoteEntryInitOptions。
- type
handlePreloadModule
SyncHook
处理 remotes 的预加载逻辑。
- type
errorLoadRemote
AsyncHook
如果加载 remotes 失败,则调用,从而启用自定义错误处理。可返回自定义的兜底逻辑。
- type
- example
beforeLoadShare
AsyncWaterfallHook
在加载 shared 之前调用,可用于修改对应的 shared 配置
- type
initContainerShareScopeMap
SyncWaterfallHook
在 host(消费者)初始化 remote(生产者)共享池映射时触发,可用于对齐/重定向某个 scope 的共享池对象(例如把 scope1 直接指向 default,让两者共用同一套共享依赖池)。
- type
resolveShare
SyncWaterfallHook
允许改写最终选中的共享模块结果。
resolveShare 触发时,运行时已经先选好了候选的 scope 和 version。这个阶段单独修改 args.scope、args.version 之类的字段,并不会自动影响最终结果。要真正改掉最终使用的 shared,需要改写 args.resolver,让它返回你希望使用的那条记录。
- type
- example
beforePreloadRemote
AsyncHook
在预加载处理程序执行任何预加载逻辑之前调用
- type
generatePreloadAssets
AsyncHook
用于控制生成需要预加载的资源
- type
loaderHook
createScript
SyncHook
用于修改加载资源时的 script
- type
- example
fetch
fetch 函数允许自定义获取清单(manifest)JSON 的请求。成功的 Response 必须返回一个有效的 JSON。
AsyncHook
- Type
- 示例:在获取清单(manifest)JSON 时包含凭证:
loadEntry
loadEntry 函数允许对 remotes 进行完全自定义,从而可以扩展并创建新的 remote 类型。以下两个简单示例分别演示了如何加载 JSON 数据以及模块代理(module delegation)。
asyncHook
- Type
- 示例:加载 JSON 数据
- 示例:模块代理(Delegate Modules)