Skip to content

参考

基于 Module Federation 2.0(v2.6 2026-06) · 核于 2026-07

速查

  • 本页汇总六张表:联邦概念 / shared 策略 / MF 1.0 vs 2.0 / 生态工具 / Native Federation 对照 / 选型决策
  • 联邦概念一句话:host/remote 可兼任 → 双向联邦;共享模块(非应用);remoteEntry/mf-manifest.json 是运行时「目录」;组合可构建时(编译写死)或运行时registerRemotes 动态)。
  • shared 策略一句话:双端声明才成交;singleton = 最高版本获胜 + 低版本告警 + lockfile 失效;治理光谱 requiredVersion(告警)→ strictVersion(拒绝);version-first(版本最优但 remote 离线即炸)vs loaded-first(容错)。
  • 1.0 vs 2.0 一句话:1.0 = webpack 内置、构建期;2.0 = 2024-04 从 webpack fork 独立、运行时 SDK、mf-manifest.json、类型联邦、DevTools、跨工具
  • 生态一句话:Rspack 内置、官方 @module-federation/vite 取代停滞的 originjs、类型联邦补 TS、DevTools 可观测、preloadRemote 拍平瀑布。
  • Native Federation 一句话:MF 心智的浏览器原生实现(ESM + Import Maps + esbuild)、bundler-agnostic、Manfred Steyer / Angular 背书。
  • 选型一句话:共享「模块」→ MF(无沙箱、需自律)隔离「应用」→ qiankun/wujie(带沙箱);都要 → 编排 + MF 叠加(同一依赖只走一套解析)。
  • 版本一句话:@module-federation/enhanced v2.6.x(2026-06、月度迭代),字节 Web Infra + Zack Jackson 维护,2026 微前端事实主线

一、联邦概念表

概念含义(架构视角)关键点
host / 消费者remotes 声明来源、运行时加载远程模块可与 remote 由同一应用兼任
remote / 生产者exposes 导出模块、产出入口清单独立部署,改版 host 不必重构
双向联邦同一应用同时 host + remote对等网络、无 shell/child 层级
模块级复用共享组件/函数/store(非整应用)同 realm、可共享 React 实例/context
remoteEntry.jsremote 的入口 + 加载器两段式加载的「目录」
mf-manifest.json2.0 结构化清单(exposes/shared/remotes/chunks/type)类型/预加载/DevTools/治理的公共数据源
share scope运行时的公共依赖货架shared 副本注册在此、按 semver 协商
构建时组合插件编译期改写 import、remote 写死静态、可 tree-shake
运行时组合registerRemotes 运行时注册灰度/A-B/动态上下线

详见联邦概念与心智模型

二、shared 版本治理策略表

机制行为治理含义
双端声明生产/消费都要声明同一 shareKey 才共享只一端声明 = 静默双份依赖(无报错)
singleton冲突时加载最高版本、低版本方仅告警实际版本由最高参与者定,lockfile 失效;React/Vue 必开
requiredVersion低于范围 → 告警后用可用版本默认档:能跑但会漂
strictVersion不满足 → 拒绝:有 fallback 用之,否则运行时抛错把版本漂移提前到联调/CI 暴露
eager打进入口同步可用免异步协商,代价入口膨胀、总被下载
shareStrategy: version-first(默认)启动即拉全部 remote 保版本最优任一 remote 离线 → 启动即炸
shareStrategy: loaded-first复用已加载、按需再拉版本非全局最优,换启动性能 + 容错
名单最小化每个共享项 = 一份构建耦合(Fowler)从「不共享」起步,只共享大而全局的

机制通论见核心机制 · 依赖共享三路线,治理决策见shared 版本治理,字段语法见webpack 深入

三、MF 1.0 vs 2.0 对比表

维度MF 1.0MF 2.0
载体webpack 5 内置特性独立项目(module-federation.io,2024-04 从 webpack fork)
依赖构建工具必须 webpack运行时 SDK,脱离构建工具
运行时 API无独立 SDK@module-federation/runtimecreateInstance/loadRemote/registerRemotes/preloadRemote
动态注册 remote基本靠 hackregisterRemotes 一等支持
清单remoteEntry.jsmf-manifest.json(结构化元信息)
类型手写 .d.ts类型联邦(自动生成 + 实时同步)
可观测Chrome DevTools 插件
插件机制无运行时插件运行时插件系统(加载生命周期钩子)
跨构建工具仅 webpackwebpack/Rspack 内置/Vite/Rollup/Metro…
维护Zack Jackson(webpack 内)字节 Web Infra + Zack Jackson,v2.6.x 月度迭代

详见 MF 2.0 运行时化

四、MF 2.0 生态工具表

能力做什么要点
类型联邦自动生成/同步 remote 的 TS 类型解决联邦模块类型丢失,DTS 插件 + manifest types
Chrome DevTools可视化联邦依赖图、config支持本地代理 + 热更新联调单个 remote
preloadRemote预取 remote 资源、拍平请求瀑布resourceCategory/exposes/filter 精准预取
Rspack内置 MFv1.5 内置,2.0 叠 @module-federation/enhanced
@module-federation/viteVite 官方 MF 插件活跃,接入官方 runtime;取代 originjs
originjs/vite-plugin-federation社区 Vite MF(旧)已停滞(自造运行时、约一年未更、Vite 7 不兼容)
框架集成Next.js/Modern.js/Rspress/StorybookReact/Vue/RN bridge,可桥接整页面

详见 MF 2.0 生态

五、Native Federation 对照表

维度webpack/Rspack MFNative Federation
底座打包器编译 + 自有运行时容器原生 ESM + Import Maps
构建器需 MF 插件适配器包装任意打包器(Angular 走 esbuild)
shared 去重share scope 运行时协商import map 条目
核心包@module-federation/enhanced@softarc/native-federation(核心)+ @angular-architects/native-federation(Angular)
背书字节 Web Infra + Zack JacksonManfred Steyer / Angular
前提平台能力自有 runtimeImport Maps 已 Baseline(2023-03)
甜区多团队规模化、治理/工具/跨工具Angular、贴浏览器标准、不绑私有运行时

详见 Native Federation

六、选型决策表

首要诉求选型理由
共享模块 · webpack/RspackMF 2.0(Rspack 内置)模块级共享、运行时协商、生态最厚
共享模块 · Vite@module-federation/vite(官方)接入官方 runtime,取代停滞的 originjs
共享模块 · Angular/贴标准Native FederationESM + Import Maps、bundler-agnostic
隔离应用 · 存量 webpack 开箱qiankun应用级 + 沙箱,接入像 iframe 一样简单
隔离应用 · Vite/更强隔离wujie / micro-appiframe/WebComponent 沙箱、ESM 友好
编排 + 共享都要single-spa/qiankun 编排 + MF 共享各取所长;同一依赖只走一套解析
极致控制 · 自建底座single-spa + import maps最小编排,自理隔离与共享

无沙箱 = 更轻但需自律(同 window、靠团队纪律防污染);带沙箱 = 更重但兜底(Proxy/iframe 隔离)。详见与应用级方案的选型微前端基础 · 2026 选型全景

权威链接

相关页