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

热门文章

最新文章

  • 1
    前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
    547
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    212
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    211
  • 4
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    153
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    257
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    380
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    168
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    106
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    177
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    242