无需登录 数据私有 本地保存

模块联邦在线演示 - 微前端共享模块

11
0
0
0
什么是模块联邦(Module Federation)?
模块联邦是 Webpack 5 引入的一项核心功能,它允许独立构建的 JavaScript 应用在运行时动态共享代码模块。与传统的 npm 包共享方式不同,模块联邦不需要将代码发布到 npm 仓库,也不需要在构建时将共享代码打包到应用中。它通过运行时的动态加载机制,实现了跨应用的模块共享。这使得多个团队可以独立开发和部署各自的前端应用,同时在运行时共享组件、工具函数和状态管理模块。模块联邦是目前微前端架构中最先进、最灵活的代码共享方案。
Host 应用和 Remote 应用有什么区别?
Host 应用(宿主应用)是微前端架构的入口和协调者,它负责加载和渲染各个 Remote 应用提供的模块。在本工具中,Main Host App(端口 3000)就是 Host 应用。Remote 应用(远程应用)是提供共享模块的独立应用,它们通过 exposes 配置将自身的模块暴露出来供 Host 使用。例如,Header Remote(端口 3001)和 Footer Remote(端口 3002)都是 Remote 应用。一个应用既可以是 Host,也可以同时是 Remote,这种灵活性使得模块联邦能够适应各种复杂的架构需求。
Shared Scope 是什么?它如何实现 Singleton 模式?
Shared Scope(共享作用域)是模块联邦中管理共享依赖的核心机制。当多个应用声明了相同的共享依赖(如 React 18.2.0)时,Shared Scope 会在运行时进行版本协商:如果各应用使用的版本兼容,则全局只加载一份依赖实例(Singleton 模式);如果版本不兼容,则各自加载独立的实例。Singleton 模式确保了像 React 这样的库在整个应用中只有一个实例,避免了 Hook 状态不同步等严重问题。在本工具的可视化界面中,你可以直观地看到 Shared Scope 的工作过程。
模块联邦与传统的微前端方案(如 qiankun、single-spa)有什么区别?
传统的微前端方案(如 qiankun 和 single-spa)主要通过 iframe 或 JavaScript 沙箱来实现应用隔离和加载,这种方式存在性能开销大、通信复杂、样式隔离困难等问题。模块联邦是 Webpack 5 原生支持的方案,它在构建层面实现了模块的运行时共享,具有以下优势:无需 iframe,性能更好;共享依赖通过 Shared Scope 实现,避免重复加载;与 Webpack 生态深度集成,配置更灵活;支持真正的模块级共享,而非应用级嵌套。模块联邦可以与传统微前端方案结合使用,也可以独立使用。
remoteEntry.js 文件的作用是什么?
remoteEntry.js 是 Remote 应用在构建后生成的入口文件,它是 Host 应用连接 Remote 应用的桥梁。这个文件包含了 Remote 应用暴露的所有模块的映射关系、共享依赖的版本信息以及加载所需的基础代码。当 Host 应用需要使用 Remote 模块时,首先会加载 remoteEntry.js 文件,获取模块信息,然后根据需要按需下载具体的 Chunk 文件。remoteEntry.js 的文件名可以通过 ModuleFederationPlugin 的 filename 配置项自定义,默认名称为 remoteEntry.js。
如何处理模块联邦中的版本冲突问题?
版本冲突是模块联邦中需要特别关注的问题。当 Host 和 Remote 使用同一依赖的不同版本时,Shared Scope 会根据版本兼容性进行协商。如果版本满足 semver 兼容规则(如 React 18.1.0 和 React 18.2.0),则使用更高版本的实例;如果不兼容(如 React 17 和 React 18),则各自加载独立的实例。在配置 shared 时,可以通过设置 requiredVersion、singleton、strict 等参数来控制版本协商行为。建议团队统一核心依赖的版本范围,并在 CI 流程中加入版本检查,从源头减少版本冲突的发生。
模块联邦是否只能用于 Webpack 5 项目?
模块联邦最初是作为 Webpack 5 的内置功能推出的,但随着技术的发展,其他构建工具也开始支持类似的功能。Vite 社区有 vite-plugin-federation 插件,Rspack 作为 Webpack 的 Rust 替代品也原生支持 Module Federation。此外,Module Federation 2.0(又称 Module Federation Enhanced)进一步扩展了功能,支持运行时类型提示、声明式远程类型等高级特性。不过,Webpack 5 仍然是模块联邦最成熟、生态最完善的支持平台,建议新项目优先选择 Webpack 5 或 Rspack 来使用模块联邦。
本工具生成的 Webpack 配置可以直接用于生产环境吗?
本工具生成的 Webpack ModuleFederationPlugin 配置代码遵循标准的配置格式,可以作为生产环境配置的基础。但需要注意,生产环境的配置还需要考虑以下事项:安全性方面,需要确保 Remote 应用的来源可信,避免加载恶意模块;性能方面,需要合理配置共享依赖的版本范围和缓存策略;稳定性方面,需要添加错误处理和降级方案,确保 Remote 应用不可用时 Host 应用仍能正常运行。建议将本工具生成的配置作为起点,根据实际项目需求进行调整和优化后再部署到生产环境。
最新

前端打包体积在线分析 - 可视化 Bundle 各模块占比

上传或粘贴 webpack 等工具的 stats.json 文件,生成交互式树状图,直观查看各模块大小与占比。

屏幕共享模拟器 - 移动端预览当前页面

以手机框架包裹当前网页视图,可调宽高,模拟实际移动端显示效果。

热门

Web NFC NDEF 消息构建器 - 写入与读取标签

构造文本、URL、MIME 等 NDEF 记录并写入 NFC 标签,同时可读取解析标签内容,适合现场调试。

应用启动处理器演示 - 焦点现有窗口

配置Launch Handler使PWA应用在重复点击时聚焦到已开窗口,而不是新建窗口。

热门

NFC标签读取演示 - Web NFC API模拟

使用Web NFC API读取NDEF格式标签的数据,展示记录类型和内容(需硬件支持)。

WebAuthn模拟器 - 创建与验证凭据

使用CTAP2模拟器或安全密钥在浏览器中体验无密码注册与认证流程。

内容安全策略生成器 - CSP HTTP头在线定制

图形化配置Content-Security-Policy指令,生成安全策略头,防御XSS和代码注入。

最新

简易机器翻译演示 - 前端调用本地模型模拟

使用示例翻译对演示翻译过程,了解机器翻译基本界面。

Docker Compose 可视化编辑器 - 图形化服务编排

拖拽服务、网络和卷,直观构建docker-compose.yml,并可导出文件,降低容器编排门槛。

栈与队列模拟器 - 推入弹出可视化操作

交互式向栈(后进先出)或队列(先进先出)添加删除元素,演示数据流变化。

Dockerfile生成器 - 语言/框架选择

选择编程语言、版本和端口,生成优化过的Dockerfile内容。

植物细胞结构标注器 - 点击部件高亮

完整的植物细胞图,点击或悬停任一部分(如叶绿体),显示其名称和功能说明。

Badging API 徽章模拟器 - 设置App图标数字角标

在PWA环境中设置和清除应用图标上的数字角标,演示Badging API的简单用法。

DBSCAN 聚类可视化器 - 密度可达交互演示

在二维平面上点击生成数据点,调节Eps与MinPts参数,实时查看DBSCAN聚类结果与噪点识别。

邮件响应式测试预览 - 多客户端模拟

粘贴 HTML 邮件代码,模拟在 Outlook、Gmail、Apple Mail 等环境下的渲染效果。

最新

LZ-String 压缩演示 - 前端友好的字符串压缩

使用 LZ-String 算法压缩长文本,展示压缩率和解压速度,适合 localStorage 存储。

最新

点球大战比分记录 - 交互式记录进球

点击球门区域记录进球/扑出,自动计算胜者。

Web推送测试客户端 - 订阅并接收测试通知

演示请求订阅Web Push,获得端点后可配合服务端发送测试推送。

反应扩散系统模拟器 - Gray-Scott 模型图案生成

运行 Gray-Scott 反应扩散模型,调节参数生成斑点、条纹等生物斑图。

热门

随机用户信息生成器 - Mock数据在线生成

生成随机的姓名、邮箱、地址、电话等用户信息,支持自定义字段和批量输出JSON数组,用于测试填充。

基于 OpenAPI 的 Mock 数据生成器 - 零配置模拟 API

上传 OpenAPI 描述文件,自动生成符合定义的模拟 JSON 响应,支持选择不同端点。

最新

Web Share Target 演示 - 将 PWA 注册为分享目标

配置 manifest 中的 share_target 字段,模拟接收来自其他应用的分享数据。

最新

CONTRIBUTING.md 生成器 - 开源贡献指南模板

通过向导填写代码规范、提交流程、测试要求等,自动生成项目的贡献指南文档。

最新

Launch Handler 演示 - 控制 PWA 启动行为

设置 launch_handler 并模拟不同启动方式,体验单窗口与多窗口模式。

逻辑门沙盒 - 与/或/非拖拽连线模拟

在画布上放置并连接与、或、非门,切换输入观察输出。

用户空闲检测高级演示 - 区分空闲/锁定

使用Idle Detection API区分用户是临时空闲、键盘无活动还是屏幕已锁定。

热门

Particles.js 配置生成器 - 粒子背景可视化定制

调整粒子数量、形状、颜色、连线等参数,实时预览粒子背景效果,导出 Particles.js 配置 JSON。

破冰话题随机生成器 - 社交/聚会聊天启动

一键生成有趣、非冒犯的破冰问题或话题,帮助缓解社交尴尬,开启自然交流。

子网掩码可视化计算器 - 滑条切分网络

拖拽滑块改变CIDR后缀,直观显示划分出的子网范围、主机数和广播地址。

文本片段链接生成器 - Scroll To Text Fragment

输入目标网址和要突出显示的文本,生成带 `#:~:text=` 的链接,精确指向页面内容。