用iframe的方式实现微前端

简介: 微前端是最近几年火起来的概念,iframe是早期实现微前端的理想方案,而现在有了其它的方案,比如qianduan框架,single-spa,以及webpack5带来的联邦模块方案。但是每一个方案都有其优缺点,感兴趣的可以去实践一下。

1、项目创建
创建3个项目,一个基座项目project_base,2个子项目project_a和project_b项目。并在各个项目安装好依赖(本项目基于vue搭建)。
image.png

2、项目基本结构
在基座项目里创建一个路由文件如iframe.vue,我们在这个文件里完成project_a,project_b等子项目的访问。
image.png

3、项目路由
每个项目分别管理自己的路由。但是需要在基座项目路由里注册管理。待访问的时候实时监听路由信息判断访问的是哪个项目。
image.png

4、项目需要解决的一些问题。
iframe的使用有很多坑,有些好解决,有些只能忍受。比如:
1、项目之间的通讯
2、iframe的弹窗及遮罩层问题
3、iframe里的全屏问题
4、组件复用问题
5、浏览器的前进后退问题

5、项目通讯问题
只能使用postMessage方法来完成基座项目和子项目之间的通讯。

6、iframe里的全屏问题
全屏方案,原生方法使用的是 Element.requestFullscreen(),插件:vue-fullscreen。当页面在 iframe 里面时,全屏会报错,且 dom 结构错乱。
解决方案:iframe 标签设置 allow="fullscreen" 属性即可

6、localStorage共享问题
跨域时候localStorage是无法共享数据的。我们可以采用:cross-storage插件

7、公共组件复用
公共组件可以单独提出来放到一个单独的项目里,这里是components项目,在components项目把公共组件全部暴露出来供其它项目安装使用,也就是说主项目和子项目可以选择性安装需要的组件。参考文章:多个前端项目中公共组件使用方案(npm包方式) 。如下图,在project_base项目里安装了整个components项目里的组件。
image.png

8、浏览器前进/后退问题
iframe 和主页面共用一个浏览历史,iframe 会影响页面的前进后退。并且 iframe 页面刷新会重置,因为浏览器的地址栏没有变化,iframe 的 src 也没有变化。这个问题暂时也没解决,还需研究。

相关文章
|
前端开发 JavaScript 安全
前端框架Layui实现动态选项卡&iframe使用(附源码)
前端框架Layui实现动态选项卡&iframe使用(附源码)
1036 0
|
30天前
|
JSON 前端开发 JavaScript
Vue微前端新探:iframe优雅升级,扬长避短,重获新生
Vue微前端新探:iframe优雅升级,扬长避短,重获新生
99 0
|
1月前
|
JavaScript 前端开发
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
前端js,vue系统使用iframe嵌入第三方系统的父子系统的通信
|
4月前
|
JavaScript 前端开发 API
JS案例:前端Iframe及Worker通信解决思路
JS案例:前端Iframe及Worker通信解决思路
84 0
|
敏捷开发 前端开发 JavaScript
基于 iframe 的微前端框架
一、背景 VAPD是一款专为团队协作办公场景设计的项目管理工具,实践敏捷开发与持续交付,以「项目」为核心,融合需求、任务、缺陷等应用,使用敏捷迭代、小步快跑的方式进行开发及质量跟踪,简化工作流程,帮助团队快速迭代并高效完成产品开发交付。 但早期VAPD以“一切皆可配置”的设计理念开发运行了两年,整个前端代码复杂混乱,组件庞大(需要支持多种配置),状态混乱,前端代码打包出来有50M之巨。这个项目难以为继,bug多、维护困难、新增功能处处受限,总之产品不满意、测试不满意、用户不满意。 因此改版是必然的选择,而改版的要求就是不能耽误用户继续使用,必须保证网站可用、逐步更新,因此微前端是必然的
|
JavaScript 前端开发 测试技术
深入调研了微前端,还是iframe最香(二)
深入调研了微前端,还是iframe最香
740 0
深入调研了微前端,还是iframe最香(二)
|
前端开发 JavaScript 安全
深入调研了微前端,还是iframe最香(一)
深入调研了微前端,还是iframe最香
354 0
|
前端开发 JavaScript API
Vue2.js:前端在浏览器中网页表格打印的实现方案:window.print、print-js、iframe
Vue2.js:前端在浏览器中网页表格打印的实现方案:window.print、print-js、iframe
618 0
Vue2.js:前端在浏览器中网页表格打印的实现方案:window.print、print-js、iframe
|
前端开发 JavaScript
微前端实现方案之iframe
微前端实现方案之iframe
微前端实现方案之iframe
|
Web App开发 移动开发 安全
「趣学前端」关于iframe跨域通信
用技术实现梦想,用梦想打开创意之门。之前开发遇到了iframe跨域通信的问题,今天分享一下解决方案,顺便总结一波知识点。
928 1
「趣学前端」关于iframe跨域通信