Module Federation 是 webpack5 中很牛逼的新特性,也是号称能改变 JavaScript 架构游戏规则的功能。接下来让我们慢慢揭开 Module Federation 的神秘面纱
模块共享的方案对比
场景:目前拥有项目 A 和项目 B,我们发现它们存在一定的共性,比如公共 UI 组件、utils 等。那我们如何同享这些公共信息呢?
简单粗暴-CV大法
直接将项目 A 的组件,copy 到项目 B 中,这样的方式有时候是比较快的,但也存在维护性极低的问题,后续两个项目都各自维护一套
抽象成 npm
我们可以将一些公共的模块抽象成 npm,每个项目都去安装该 npm 包,从而达到共享的目的
但是 npm 包的方式存在以下问题:
编译与构建:一些公共的工具库,框架以及 UI 库存在重复构建,造成性能低下
版本更新:需要各个项目都去升级。“发布 -> 通知 -> 更新” 的方式是比较低效率的
CDN + webpack externals
跟 npm 类似,只不过将其上传到 CDN,通过结合 webpack