webpack 模块联邦

668 阅读2分钟

一、如何共享模块

1、NPM 方式共享模块

image.png 想象一下正常的共享模块方式,就是 NPM。正常的代码共享需要将依赖作为 Lib 安装到项目,进行 Webpack 打包构建再上线。

对于项目 home 与 search,需要共享一个模块时,最常见的办法就是将该模块抽成通用依赖并分别安装在各自项目中

2、微前端方式共享模块

image.png 微前端:micro-frontends (MFE) 模块共享管理方式,微前端就是要解决多项目并存问题,多项目并存的最大问题就是模块共享,不能有冲突。需要考虑样式冲突,生命周期冲突,生命周期管理等。

微前端可分为2种打包方式。

一、子应用独立打包,模块实现解耦,但无法抽取公共依赖。

二、整体项目打包,虽能解决上诉一,但打包效率太慢,可扩展性差。

3、模块联邦方式

image.png 从图中可以看到,这个方案是直接将一个应用的包应用于另一个应用,同时具备整体应用一起打包的公共依赖抽取能力。

让应用具备模块化输出能力,其实开辟了一种新的应用形态,即 “中心应用”,这个中心应用用于在线动态分发 Runtime 子模块,并不直接提供给用户使用

除了以上例举当然还有git submodules 这里不在一一赘述

二、如何使用Federated Module

优势:webpack5 引入联邦模式是为了更好的共享代码。 在此之前,我们共享代码一般用npm发包来解决。 npm发包需要经历构建,发布,引用三阶段,而联邦模块可以直接引用其他应用代码,实现热插拔效果。对比npm的方式更加简洁、快速、方便

1、具体使用:

image.png

2、配置属性:

image.png