利用iframe联合跨仓库路由模块

需求背景

两个有路由转跳关系的模块(模块A和B,AB可以通过路由互相转跳)分散在两个不同的项目中(比如迁移仓库没全迁移完,只迁移了A模块),此时后端需要联调AB模块整体功能。

此时可以借助一个父项目,把A模块和B模块通过iframe嵌入,从而实现功能的组合。

实现思路

把A模块与B模块中路由转跳相关的代码修改为与父应用的通信(window.parent.postMessage),目的是借助父应用与另一个模块通信,父应用中就可以通过接收到的路由参数拼接出目标的路由地址,然后操作另一个模块的iframe的src属性,从而完成正常的路由转跳。

demo模拟

结构说明

index.html相当于嵌入了很多子项目的主应用,里面通过iframe嵌入了child.html以及一个哔哩哔哩主页的iframe。

child.html相当于一个子应用,它可以读取一个id,从而向主应用发送消息,主应用监听消息事件,操作b站iframe的src,从而做到子应用之间的通信。

运行方式

通过live-server启动index.html与child.html

在index.html应用中:操作上方child.html里的input,输入用户id,点击按钮。观察下方iframe的变化

代码分析

child.html



  
    
    
    另一个iframe页面
  
  
    
    请输入用户主页id:          
     

index.html



  
    
    
    Document
  
  
  
    
           
             
   
     

关于子应用样式

我们可以在父应用中在子应用的iframe的外层套一个div,这个盒子flex布局,并给iframe设置flex: 1;样式,可以封装成一个组件,伪代码:

 

子应用的展示大小(空间)此时就由父应用中组件的props进行控制,我们的子应用最好设计成响应式的,以满足父应用中分配各种空间大小时,子应用的正常展示!

你可能感兴趣的:(服务器,运维)