微前端落地系列-复盘(下)

简介: 前沿:哈喽大家好,我是树酱🌲,好久不见。本文主要为了做复盘,在去年基于qiankun微前端架构的门户建设中,遇到的一些问题,可能你会认为:“哇,这也算问题吗?太简单了吧”。主要是分享在我认知体系内是如何解决的,如果对其中一些解决方案有更好的建议,记得在评论区留言~

3.如何让新的子应用实现快速集成


前言:我们知道qiankun架构中一个子应用要集成到主应用中,是需要创建生命周期函数,比如mounted等以及修改打包方式。那如何快速让新的子应用实现快速集成呢?


我们是通过打造一个简易版的脚手架工具,把涉及相关的功能用一套模版维护起来,然后通过维护好的这个模版,然后通过脚手架创建新项目,本质上就是拉取这个模版,如下图所示


微信截图_20220514184422.png


具体开发可以参考之前写的《前端那些事》从0到1开发简单脚手架


4.如何动态注册应用?


前沿:为了让主应用可以去访问不同的子应用,我们需要在配置文件中定义好每个子应用的入口entry以及访问名称,以此来注册子应用,我们一般会不同的环境有不同的配置,比如下图所示


微信截图_20220514184438.png


👨‍🎓 啊斌同学:那这样的话,每次修改子应用的entry或者新增新的子应用都得重新编译门户这个主应用


🌲:是的,本地配置化是会存在这样的问题,我们可以搭建一个配置中心来维护,然后通过接口调用的方式来获取不同环境的,像下面这样👇


微信截图_20220514184449.png


5.部署中遇到的问题


前沿:部署微前端体系门户涉及到私有云部署,公有云部署,还有基于容器化部署等等。过程中遇到一些问题


5.1 主应用加载子应用静态资源跨域咋搞?


本质上是因主应用是通过fetch去获取子应用的静态资源的,然后通过正则去解析出来子应用的静态资源信息,然后fetch下来,所以必须要求这些静态资源支持跨域,如何配置如下图所示,通过设置允许源了


微信截图_20220514184456.png


Access-Control-Allow-Origin:跨域在服务端是不允许的。只能通过给Nginx配置Access-Control-Allow-Origin *后,才能使服务器能接受所有的请求源(Origin)


5.2 主应用加载子应用的静态资源不是最新,导致加载失败?


本质上就是子应用更新了代码,而主应用在fetch子应用资源的时候,加载到缓存的资源,导致加载资源失败,那么怎么解决呢?我们可以在子应用的nginx中,设置cache-control,在每次请求资源的时候都检查是否更新。


微信截图_20220514184507.png


5.3 如何让每个子应用都拥有通用的ngixn配置?


为了解决以上问题,又要保证通用性,可以针对每个子应用都是同样的nginx配置,这时候可以通过在dockerfile中定义,在打包到容器时,把nginx.conf也打到容器中


微信截图_20220514184514.png


5.4 如何正确部署主应用和子应用?


主要是两种方案:


  • 1.主应用和子应用部署到同一个服务器


这种情况适合公司服务器数量较少,核心就是把主应用部署在一级目录,其他子应用放在二级目录


  • 2.主应用和子应用分别部署在不同服务器


这种情况又分为两种,一种是所有子应用都在一台服务器,一种是不同子应用在不同服务器,独立运行。


最后,以上两种方式都有好有坏,具体看你搭建的系统是内部以ip访问为主还是外部访问域名为主,去根据实际情况应用。如果是内部系统建设,子应用以内部访问ip为主,子应用都在独立服务器,无需在配置过多域名,那可以直接用方案2,那如果是对外且域名有限,那方案1或许更合适。


具体的配置方式,我看qiankun官网文档已经更新,可查阅🔗文档 这里就不重复介绍



相关文章
|
数据采集 移动开发 前端开发
如何使用JavaScript实现前端导入和导出excel文件(H5编辑器实战复盘)
最近笔者终于把H5-Dooring的后台管理系统初步搭建完成, 有了初步的数据采集和数据分析能力, 接下来我们就复盘一下其中涉及的几个知识点,并一一阐述其在Dooring H5可视化编辑器中的解决方案. 笔者将分成3篇文章来复盘, 主要解决场景如下
722 0
|
3月前
|
缓存 前端开发 JavaScript
前端项目重构的一些思考和复盘
前端项目重构的一些思考和复盘
56 1
|
前端开发 数据安全/隐私保护 网络架构
微前端落地系列-复盘(上)
前沿:哈喽大家好,我是树酱🌲,好久不见。本文主要为了做复盘,在去年基于qiankun微前端架构的门户建设中,遇到的一些问题,可能你会认为:“哇,这也算问题吗?太简单了吧”。主要是分享在我认知体系内是如何解决的,如果对其中一些解决方案有更好的建议,记得在评论区留言~
127 0
微前端落地系列-复盘(上)
|
9月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
95 0
|
9月前
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线程配置
前端学习笔记202305学习笔记第二十三天-地图单线程配置
66 0
前端学习笔记202305学习笔记第二十三天-地图单线程配置
|
9月前
|
前端开发 API
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-react-redux的工作流程
55 0
|
9月前
|
前端开发
前端学习笔记202306学习笔记第五十一天-工厂模式4
前端学习笔记202306学习笔记第五十一天-工厂模式
34 0
|
9月前
|
前端开发
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序4
前端学习笔记202305学习笔记第二十八天-数组结构之列表拖拽改变顺序4
32 0
|
5月前
|
前端开发 JavaScript
《Webpack5 核心原理与应用实践》学习笔记-> 构建微前端应用
《Webpack5 核心原理与应用实践》学习笔记-> 构建微前端应用
41 1
|
9月前
|
JavaScript 前端开发 调度
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber和虚拟dom关系
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber和虚拟dom关系
59 0