随着企业规模与业务的持续发展,很多企业集团拥有众多的应用与系统,比如客服中心系统,用户中心系统,结算中心系统,物流中心系统等……。由于历史原因,这些系统拥有独立的访问域名和入口,独立的操作界面与后台,这给企业的管理和运维带来了非常大的挑战,主要有以下几点:
1. 由于各个应用系统入口不统一,许多用户需要保存记录多个网址。
2. 每个系统均有自己独立的用户账号管理,账号不统一。
3. 各个系统之间切换的时候,需要反复登录。
4. 每个系统的UI界面与操作风格不统一。
为了解决以上问题,可以采用以下策略:
1. 创建统一的管理平台,用户只需要记录统一的管理平台的地址即可。
2. 统一账号,将所有的账号信息由统一管理平台统一维护,包括注册、权限、信息维护。
3. 统一登录,即只需要在统一管理平台登录一次,在不同应用系统间切换不再需要重复登录。
4. 统一视觉与交互,创建统一的UI设计规范与交互规范,各个应用系统必须遵守。
方案一:各系统完全独立的方案
统一设计
每个应用与系统完全独立开发,技术方案与选型没有任何限制,无论是单页应用(SPA)还是多页应用(MPA),无论是REACT, VUE, ANGULAR还是Jquery。 只要遵守设计规范,保障各个系统UI风格和交互统一即可。
这个方案更适合于各个应用非常独立,从前端到后端服务全部都归属于某个业务方,而且各个业务方之间也比较独立,没有中心化管理的需求。
各个系统可以通过CDN加载统一的CSS样式,JS脚本来实现样式和交互方式的统一。
方案二:Iframe方案通过Iframe内嵌,可以使用户在当前系统页面中查看其他系统页面的内容,并且iframe本身具有100%隔离性(天然隔离CSS样式,JS脚本),具有技术栈无关等优势。
iframe方案
<iframe src="http://example.com" />
劣势:
1. iframe 用户体验不好,页面加载慢,会出现双滚动条;
2. 内部蒙层无法遮罩到外部框架,同时布局也无法居中;
3. iframe 内部路由跳转,不会影响到外部的路由地址,无法记住当前访问的页面地址,当刷新页面的时候,iframe又会回到之前的页面。
4. 因为完全的运行环境隔离,给数据同步增加了成本,通常用 postMessage 解决复杂通信的问题。Safari 11之后默认禁止跨站跟踪,所以会强制隔离同域的cookie,localstorage,造成应用的某些功能比如同步登录不好用。
方案三:微前端方案什么是微前端:微前端是主应用(统一后台)通过路由的监听与接管, 运行时动态加载对应地址的子应用(中心网站)的内容(HTML/JS/CSS), 之后运行在主应用的容器中的一种架构方案。
微前端
微前端特点:
1. 与技术栈无关
2. 子应用独立部署
3. 用户体验好,不会全页面刷新,子应用与主应用无缝衔接,主应用对子应用可控,子应用可获取主应用资源(看上去就是一个应用一样),可通过主应用进行数据通讯。
4. 主应用加载子应用的时候需要子应用部署的时候支持跨域,当子应用运行在主应用的容器里时,子应用请求子应用的后端API时,也需要子应用后端API支持跨域。
5. 主应用与子应用需要按照统一规则进行开发(通过约定命名空间规避CSS样式冲突等问题),并进行联调测试(接入问题可能会比较多)
6. 适合将一个大项目(巨石应用)拆分为许多不同技术栈,独立仓储,独立部署的小型应用。
7. 不适合接入传统多页应用MPA
,