# 注意事项

注:子应用开发方式,除了以下说明的注意事项,其他姿势与一般项目无差别,包括路由模块配置、ajaxurl处理等,不需要有任何心理负担

# 主应用

  1. 左侧导航

文档-导航tab (opens new window)。描述了两种方式:①通过UmcAuthSiderMenu组件根据权限树自动生成 ②自定义(手动方式)。方案①对权限中心的权限树配置有要求,需要权限树完全按照系统左侧导航目录进行配置,但是配置化后,后续如果要集成新的子应用,只需要修改权限树,而不需要重新上线主应用。

如何选择:

  • 老工作台迁移:如果原有工作台左侧导航就是自动生成,或者权限树满足规范,用方案①,如果原有权限树与要求相差甚多,尝试说服产品进行权限树改造,但是风险比较大。如果说服成功了,就用方案①,失败了,就用方案②
  • 新工作台:使用方案①
  1. 子应用集成方式

应用开发相关文档中提到了两种方式:①主应用+Apolloy ②API网关

如何选择:优先考虑方案①

# 子应用

  1. 文件下载: 使用@sharkr/utils包
import { download } from '@sharkr/utils';
// contextPath 为子应用自己的contextPath
download(`${contextPath}${downloadUrl}`)
  1. window.open新窗口打开应用其他页面的场景: 使用@sharkr/utils.

Angular,html中的href,建议也替换成这种方式

import { openUrl} from '@sharkr/utils';
// contextPath为子应用自己的contextPath
openUrl(`${contextPath}/#/${hash}`);
  1. server端,globaleMiddle.ts,关掉@tiger/permission、@tiger/security的校验。(只有当集成方式使用主应用+apolloy时,才可以去掉)

说明:

  1. 做1、2两步调整,是因为使用微前端开发模式后,原有应用的访问path由一段改成两段。比如说:原有品控的访问地址:/qc, 现在需要调整成 /qc/{子应用的contextPath}。其中第一段qc代表的是哪一个主应用(工作台),第二段代表的是哪个子应用。子应用开发过程中,只会关注自己的contextPath,并不知道会接入哪个主应用。所以使用download和openUrl方法时,检测到如果当前应用是做为一个子应用再跑,就会在url前加上主应用的contextPath。
  2. 主应用+apolloy集成方式场景下,子应用中去掉@tiger/permission、@tiger/security这两个中间件,是因为这种场景,所有请求会先到主应用,主应用会做一遍权限相关的校验,所以子应用没有必要再做。