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:等第三方框架:系统直接有频繁交互。用到特定公共组件情况。
-