logologo
指南
实践
配置
插件
案例
博客
生态
Module Federation Examples
Practical Module Federation
Zephyr Cloud
Nx
简体中文
English
指南
实践
配置
插件
案例
博客
Module Federation Examples
Practical Module Federation
Zephyr Cloud
Nx
简体中文
English
logologo

开始

介绍
设置环境
快速上手
功能导航
名词解释
npm 包

基础

运行时

Runtime 接入
Runtime API
Runtime Hooks
Rsbuild Plugin
Rspack 插件
Webpack Plugin
Rspress Plugin
Vite Plugin
Metro
类型提示
命令行工具
样式隔离

数据管理

数据获取
数据缓存
Prefetch

框架

Modern.js
Next.js

部署

使用 Zephyr Cloud 部署

调试

开启调试模式
Chrome Devtool
全局变量

Troubleshooting

概览

运行时

RUNTIME-001
RUNTIME-002
RUNTIME-003
RUNTIME-004
RUNTIME-005
RUNTIME-006
RUNTIME-007
RUNTIME-008
RUNTIME-009

构建

BUILD-001
BUILD-002

类型

概览
TYPE-001
其他
Edit this page on GitHub
Previous Page开启调试模式
Next Page全局变量

#Chrome Devtool

微前端 架构不同于传统单体应用的开发模式,其分开开发、部署、调试的特征使其需要一套新的调试工具来满足新的使用场景,诸如:在开发 Module Federation 时怎么验证模块在实际项目中的效果、 Module Federation 的依赖是否和宿主环境进行了复用、当前页面加载了哪些 Module Federation , Module Federation 的依赖关系、Module Federation 间的数据流转是怎么样的。

Chrome Devtool 提供了以下能力:

  • 支持 Module Federation 代理功能,将线上页面中的Module Federation代理到用户本地的Module Federation
  • 切换线上页面Module Federation版本,来进行快速的功能验证
  • 支持查看模块依赖信息
  • 支持筛选指定模块依赖信息
关于 Chrome Devtool 的限制:

必须使用 mf-manifest.json 才可以使用 Chrome devtool 提供的可视化和代理能力

#使用场景

开发环境以及生产环境

  • 已有模块需要代理,目前支持以下种场景:
  1. 支持本地服务端口号,例如 key: appA -> value: http://localhost:3000/mf-manifest.json,页面将直接加载 3000 端口的 Module Federation 内容
  2. 支持使用 mf-manifest.json 文件地址形式,例如:key: appA -> value: https://xxx/static/mf-manifest.json, 页面将直接加载指定地址的 Module Federation 内容
  • 希望看到远程依赖关系图

#如何安装

  1. 打开 Module Federation 插件详情页, 点击 添加到 Chrome 按钮

#如何使用

插件提供了 Devtools 面板

  • F12 打开开发者工具,选择点击 Module Federation tab,进入代理页面,便可对依赖的模块进行代理调试

#整体交互

如下图所示,代理页面上提供了 add new proxy module、producer selector、 version or local port or custom entry 等选项操作。

  • 通过选择 producer selector 选择出目标页面需要代理的一个模块;
  • 通过 version or local port 选择或者输入指定的地址(包括端口号和 mf-manifest.json 结尾的地址),进行代理操作;
  • 如果需要同时代理多个模块,点击 add new proxy module 区域,增加对应的代理模块。

#如何将本地开发的模块代理到线上

  • 首先需要在本地启动生产者

  • 然后将启动成功的 manifest 地址,输入到代理页面的版本选择输入框内
  • 之后调整本地的生产者代码,消费者页面将会自动 Reload

#常见问题

#Devtools 内容太拥挤

可以将 devtools 改成独立窗口打开

#配置何时生效

  • ✅ 符合验证规则
  • ✅ 配置规则被勾选
  • ✅ 配置填写正确,页面显示:代理配置已生效,获取远程模块成功,已自动刷新对应页面

#部分配置符合规则

插件会筛选出符合配置规则的模块进行代理