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

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

11
0
0
0
模块联邦(Module Federation)

模块联邦是 Webpack 5 引入的一项革命性功能,允许独立构建的 JavaScript 应用在运行时动态共享和加载彼此的模块,而无需重新构建或重新部署。它解决了微前端架构中最核心的代码共享问题,使得团队可以独立开发、独立部署,同时在运行时实现模块的跨应用共享。本工具的所有功能都是围绕模块联邦这一核心概念展开的。

Host 应用(宿主应用)

Host 应用是微前端架构中的入口应用,负责加载和协调各个 Remote 模块。在本工具中,Main Host App 运行在端口 3000,是整个系统的主控方。Host 应用通过 Module Federation 配置中的 remotes 字段声明需要连接的 Remote 应用,并在运行时动态加载它们提供的模块。理解 Host 的角色是掌握模块联邦的第一步。

Remote 应用(远程应用)

Remote 应用是提供共享模块的独立应用。在本工具中,Header Remote(端口 3001)和 Footer Remote(端口 3002)都是 Remote 应用。它们通过 exposes 配置将自身的模块暴露出来,供 Host 应用或其他 Remote 应用在运行时加载使用。Remote 应用可以独立开发和部署,不影响其他应用的正常运行。

Shared Scope(共享作用域)

Shared Scope 是模块联邦中实现依赖共享的核心机制。它维护了一个全局的共享依赖注册表,记录了所有已加载的共享模块及其版本信息。当多个应用共享同一个依赖(如 React 18)时,Shared Scope 会确保全局只加载一份实例,避免重复加载和版本冲突。这是实现 Singleton 模式的技术基础。

Singleton 模式(单例模式)

在模块联邦的上下文中,Singleton 模式指的是共享依赖在全局范围内只存在一个实例。例如,如果 Host 和 Remote 都共享 React,那么在整个应用中只会加载一份 React 代码。这不仅节省了网络带宽和内存资源,更重要的是确保了状态的一致性。如果 React 被加载了两份,会导致 Hook 状态不同步等严重问题。通过 Shared Scope 的版本协商机制,模块联邦能够安全地实现 Singleton 模式。

remoteEntry.js(远程入口文件)

remoteEntry.js 是 Remote 应用构建后生成的入口文件,它包含了模块联邦运行所需的所有元信息,包括该 Remote 应用暴露了哪些模块、使用了哪些共享依赖以及版本信息等。Host 应用通过加载这个文件来获取 Remote 应用的模块信息,进而按需加载具体的模块 Chunk。remoteEntry.js 是 Host 与 Remote 之间通信的桥梁。

Chunk(代码块)

Chunk 是 Webpack 构建后生成的 JavaScript 代码片段。在模块联邦中,每个暴露的模块会被打包成独立的 Chunk,Host 应用在需要时按需下载对应的 Chunk。这种按需加载的机制确保了应用只加载当前需要的代码,避免了不必要的资源浪费,提升了应用的加载性能。

ModuleFederationPlugin(模块联邦插件)

ModuleFederationPlugin 是 Webpack 5 内置的插件,用于配置模块联邦的行为。它提供了 name、filename、exposes、remotes、shared 等配置项,开发者通过这些参数定义模块的暴露、引用和共享规则。本工具的核心功能之一就是根据用户的可视化配置实时生成 ModuleFederationPlugin 的配置代码。

微前端(Micro Frontend)

微前端是一种前端架构模式,将大型前端应用拆分为多个小型、独立开发和部署的应用单元。每个微前端应用可以由不同的团队使用不同的技术栈独立开发,最终在运行时组合成一个完整的用户界面。模块联邦是实现微前端架构的最先进方案之一,它通过运行时模块共享解决了传统微前端方案中的诸多痛点。

exposes(暴露模块)

exposes 是 ModuleFederationPlugin 配置中的一个关键字段,用于定义 Remote 应用要暴露给其他应用的模块列表。通过 exposes,Remote 应用可以选择性地将自身的组件、函数或数据暴露出去,供 Host 应用在运行时加载和使用。合理的 exposes 配置是实现模块共享的前提条件。

最新

前端打包体积在线分析 - 可视化 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=` 的链接,精确指向页面内容。