谈谈模块联邦
模块联邦:Module Federation
- 可使用webpack模块联邦来实现微前端应用
- 远程模块动态加载,将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式
- 能够实现独立部署、独立开发(不同应用甚至允许使用不同技术栈)
- 模块联邦目的就是更好的共享代码
八股文上谈
模块联邦是webpack5特性, 可以在不同应用之间做到模块共享。 模块共享也有其他方式可以实现,比如npm包,但是npm包的缺点也很明显,有修改的时候需要构建发布npm包,每个项目应用都需要升级一遍,比较繁琐
缺点:
- 每个项目应用都需要基于webpack5,才可以使用,无法使用其他构建工具,比如vite
模块联邦的过程
每个应用块都是一个独立的构建,这些构建都将编译成容器。容器可以被其他应用或者其他容器应用。一个被引用的容器被称为remote,引用者被称为host,remote暴露模块给host,host则可以使用这些暴露的模块,这些模块被称为remote模块。通过这种方式,可以将一些东西共享给别人使用,实现联邦式的模块共享
理解上谈
应用层面上谈
Webpack5预构建:
- Webpack5预构建使用了模块联邦,实现更高效的构建和更快的启动时间
- 在构建过程中预先编译和打包共享的模块