文章
问答
冒泡
页面嵌套实践

1、浏览器打开新标签 window.open() 方法

    • 通过额外参数配置,设置打开窗口大小等元素

window.open(href,'_blank','width=400,height=760,location=no,menubar=no,resizable=no,titlebar=no,toolbar=no')

优点:简单,各个系统不需要额外修改配置,可以直接使用移动端的页面开展示。

缺点:这种方式有时不能满足产&销售的期望,看上去是多个系统跳转,标签开多了,来回切换麻烦。

 

2、qiankun框架 以前端微应用的形式接入

本应用作为主应用,把引入系统作为子应用。

子应用

判断全局变量isMicroApp=window.__POWERED_BY_QIANKUN__是否在微应用下,设置cookie

优点:能轻松解决单点登录cookie共享的问题,方便交互传参,聚客聊天窗口能无缝对接。

缺点:嵌套需求下设为主应用需要下载第三方库,额外的维护成本。被嵌入应用也需要根据qiankun框架做额外配置,子应用需要判断是否在微应用环境下,显示头部,侧边栏等功能判断,全局样式的冲突,需要重新修改。

3、iframe嵌套

主要问题:共享cookie,跨域cookie设置不上 

方案1:node层通过cookie的domain属性设置 (需要根域名相同)

方案2:javascript 原生方法window.postMessage() (iframe大部分通信都是靠这个实现 )

发送postMessage

接收message

优点:简单,成本低,安全,隔离,

缺点:不同域名存在跨域,cookie设置困难,加载速度慢,交互体验受限。

 

总结

如何选择嵌套方式?

系统嵌套主要解决组织和团队间协作带来的工程问题,而不是单纯的某个技术问题。

      • 标签页打开:业务复杂度高,有深层跳转,有单独登录的用户体系,跨域等情况。
      • Iframe:列表查询,详情页面等这种,同域名下
      • Qiankun:等第三方框架:系统直接有频繁交互。用到特定公共组件情况。

 

 


关于作者

这样
划水摸鱼专业户
获得点赞
文章被阅读