模块联邦(Module Federation)是 Webpack 5 引入的核心功能,旨在实现多个独立构建的前端应用在运行时动态共享代码、依赖或组件,支持微前端架构和跨项目模块复用。
模块联邦的核心概念
模块联邦通过去中心化的设计,允许不同应用在运行时直接共享模块,无需重复打包或依赖 NPM 安装。其核心特点包括:
独立构建与部署:每个应用(容器或远程)可单独开发、部署,通过暴露(exposes)和引用(remotes)机制实现模块共享。
运行时动态加载:模块按需异步加载,减少初始包体积,提升性能。
依赖共享:通过 shared 配置(如React、ReactDOM)避免重复加载,确保单例模式。
典型应用场景
微前端架构:将多个子应用集成到宿主容器中,实现技术栈解耦和独立部署。
跨项目组件复用:通用组件(如按钮、表单)可被多个项目动态引用,减少重复开发。
依赖优化:共享第三方库(如 Lodash )以降低整体打包体积。
实现步骤与配置
- 使用
ModuleFederationPlugin声明远程模块入口(remotes)和共享依赖(shared)。
1 | const { ModuleFederationPlugin } = require('webpack').container; |
- 远程应用配置通过 exposes 暴露模块,并配置共享依赖
1 | new ModuleFederationPlugin({ |