所谓的微前端

微前端实践

那时候的微前端还没今天这般火热,回过头来仔细琢磨才发现那是最早的一次微前端实践。当时,我们在做项目迁移,使用最新的前端技术重写了系统。可是规划中并没有给我们足够的时间去重写项目,而且二期的需求已经开始排期了。系统的升级没有完成,就只能用老系统。这也意味着新的需求,我们需要在新旧系统上都要做一遍,这段时间里,在人力安排上真是苦不堪言。

如果在新系统上完成的功能模块也可以运行在老系统上,这不就省下很多的时间和人力了么?这就是微前端的使用场景吧。而后来又不断有第三方的应用集成进来,现在想想,这种需求其实还是比较常见的。所以要说微前端都用在哪里,可以想到的是,新旧系统迁移和聚合应用。

我理解的微前端,就是把不同的前端项目聚在一起,最起码从视图的角度来看,它们是一体的,这些前端应用可以各自独立开发,互不干扰。而在当今的前端圈中,React、Vue 和 Angular 最为流行,这也使得应用聚合时变得麻烦起来,所以也有提出 React 和 Vue 互转的方案。



最简单的方式是通过路由分发,可以是在前端应用中配置也可以是反向代理配置。



如果是前端路由分发,需要写个路由管理的组件。不过,还可以更省事,就拿上面提到的新旧系统的迁移,我们使用了以下方案。



B、C 挂载点就是需要挂载在 A 应用上的 DOM 节点。

而对于相同技术栈的前端应用,虽然以上的方法都以使用,但是,这么做就可能有些浪费。既然是相同技术栈,那么依赖就有可能是相同的,而对于共同的依赖没有必要多次去加载。这让人想起了 webpack 上 DLL 插件,就是把基础库剥离出来。



还有 iframe,这让人想到一个笑话,有个老板要做引擎,还要做成百度那样的,如果使用 iframe 应该是秒秒钟的事情,不过这东西对 SEO 不友好,而且限制条件比较多,像 MDN 这类网站就是不行的。Visual Studio Code 上展示 web 页面的插件就有用 iframe 实现的。

实现微前端的方案还有很多,而且并不是特别难的事情,可能是越花哨的词,让人越觉得调调高吧。

------------- The End -------------
显示评论