微前端的概念是由ThoughtWorks在2016年提出的,它借鉴了微服务的架构理念,核心在于将一个庞大的前端应用拆分成多个独立灵活的小型应用,每个应用都可以独立开发、独立运行、独立部署,再将这些小型应用融合为一个完整的应用,或者将原本运行已久、没有关联的几个应用融合为一个应用。微前端既可以将多个项目融合为一,又可以减少项目之间的耦合,提升项目扩展性,相比一整块的前端仓库,微前端架构下的前端仓库倾向于更小更灵活。
它主要解决了两个问题:
1、随着项目迭代应用越来越庞大,难以维护。
2、跨团队或跨部门协作开发项目导致效率低下的问题。
我们对iframe、single-spa、qiankun、micro-app等相关技术进行了对比研究,最终选型了micro-app作为我们的技术方案。
详细内容可参考micro-app官网:https://cangdu.org/micro-app/docs.html
基于micro-app技术方案,云程平台完成了微前端基座的改造,可以作为微前端主应用使用,能够接入微前端子应用。
微前端子应用需要设置允许跨域访问,主应用才能加载子应用的资源。
开发环境,需要设置打包配置文件的devServer的headers属性:
- headers: {
- 'Access-Control-Allow-Origin': '主应用域名',
- // 或者
- // 'Access-Control-Allow-Origin': '*',
- },
生产环境,微前端nginx 需要配置:
'Access-Control-Allow-Origin': '主应用域名',
或者:
'Access-Control-Allow-Origin': '*',
第三方的微前端子应用必须完成与平台的单点集成,具体的单点集成方案,请参考单点集成相关的文档。
主子应用通过单点方式集成后,token信息存入localStorage中,子应用获取token的方式为:
const token = localStorage.getItem('yuncheng__Access-Token')
子应用提前准备好要接入主应用的路由地址,并且能正常访问。如下图的“/test”。
在浏览器能够正常访问子应用的路由地址。
在平台的菜单管理中,新增菜单。
选择组件“微前端应用”,组件会自动填写,并且在页面底部,会显示子应用访问地址的输入框。
填写菜单路径,也就是子应用的路由地址,此例与上一步呼应,使用“/test”。
填写子应用访问地址,子应用访问地址和菜单路径拼装,就是上一步测试子应用单独访问的地址。
给菜单授权后,刷新前台页面进行访问测试,效果如下。
参考:
阿里QianKun(乾坤)和京东MicroApp微前端框架哪个好?
微前端框架哪个好?QianKun还是MicroApp_大龄码农有梦想的博客-CSDN博客