微前端概念已经出来很久了,社区也有很多很成熟的解决方案。从iframe到single-spa,再到如今的百花齐放。
阿里的qiankun,字节的garfish,京东的micro app等,都是很优秀的解决方案。
为什么放着这么多优秀的解决方案不用,转而要自己折腾一套呢?
因为不合适。
软件开发中没有银弹。
之前的工作中,我们使用了garfish作为项目微前端的解决方案。结果在实际使用情况中,出现了很严重的问题,并且就当时而言,市面上的几款微前端框架都存在类似的问题。
在这种情况下,我们迫不得已,放弃了市面上现有的几款微前端框架的解决方案。
但是,微前端给我们带来的好处其实是显而易见的。尤其是在大型应用中,依靠微前端,将一个大型项目拆分成若干个子应用,每个子应用可以单独开发、部署,对于需求交付而言,是极大的助力。
最终,我们采用了webpack 5的module federation能力,实现了微前端。
事实上,在很多介绍module federation的文档中,也都或多或少的提到了,能利用该能力作为微前端的一种实现。
然而,却很少有人介绍如何从0到1,利用module federation能力来搭建一个微前端项目。
既然如此,那就从我开始吧。