相信很多公司正在用微前端对产品进行架构系统的优化,因为微前端的 独立性,技术灵活性 等核心价值,为微前端带来了不少流量。
以下以 qiankun 为例(以下介绍借鉴于 qiankun)
什么是微前端
微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。
微前端的价值所在
· 技术栈无关
主框架不限制接入应用的技术栈,微应用具备完全自主权
· 独立开发、独立部署
微应用仓库独立,前后端可独立开发,部署完成后主框架自动完成同步更新
· 增量升级
在面对各种复杂场景时,我们通常很难对一个已经存在的系统做全量的技术栈升级或重构,而微前端是一种非常好的实施渐进式重构的手段和策略
· 独立运行时
每个微应用之间状态隔离,运行时状态不共享
微前端给各大厂带来了各种便利,而有些又是大家觉着很正常但是恰恰又不支持的功能摆在面前,而不得不去解决。
博主公司是基于 qiankun 搭建的系统框架,同时子应用多达十个,但是从用户反馈来说,菜单的灵活性不够,因为子应用之间的子菜单不能够随意调换,也就是菜单混排。
单项目中,菜单之间是可以随意调换而不会有任何影响的,但是在两个独立运行的子应用中,想让菜单相互混排,就比较麻烦了。
处理过程中,也踩过不少坑,特别注意的是以下几点
1、什么都不操作的情况下,直接进行菜单混排,页面加载不出来
2、如果只把混排后的子菜单,复原到原菜单下,则在进行菜单切换的时候,同样访问的是空白页面(如上图)
3、如果在保留混排后的子菜单,并复制一个子菜单到到原菜单下,则在访问菜单时,一级菜单会读取比较靠前的那个,导致一级菜单展开的不对
如把一级菜单 cpp管理 下的子菜单 cpp订单管理 混排到 一级菜单 工具中心 下,通过上面的操作,在访问 cpp订单管理 时,一级菜单 展开的是 cpp管理 而不是 工具中心
4、在新建菜单时 ,会有一个很蛋疼的操作,就是两个实用菜单之间要创建一个伪菜单,进行过度(这个 BUG 很蛋疼,最终完全解决混排前都不知道怎么产生的 ╮(╯▽╰)╭)
先给大家说下解决思路吧
1、首先获取菜单数据,并