tiangong-doc tiangong-doc
首页
  • 天宫体系

    • 前端架构
    • 后端架构
    • 扩展功能
    • 打包部署
    • 更新日志
    • 辅助开发平台 (opens new window)
    • 权限平台部署包下载 (opens new window)
  • 基础组件

    • 工作流引擎(待整理)
    • 跨境加签客户端(待整理)
    • 权限平台(待整理)
  • 数字化工具

    • 数字魔方
    • 数据采集
    • 智能导入
    • 数字员工
    • 规则引擎(开发中)
    • 消息引擎(待开发)
    • 智能导出(待开发)
  • 业务算法

    • 南京业务体检(待整理)
    • 智慧长江(待整理)
  • 识别模型

    • 空箱识别(待整理)
    • 智能客服(待整理)
    • OCR识别(待整理)
    • 车牌识别(待整理)
    • 超市停留识别(待整理)
    • 危险品识别(待开发)
    • 超长车识别(待开发)
    • 车辆靠台(待开发)
    • 车辆占用(待开发)
  • 算法模型(待整理)
  • 风控模型(待整理)
  • 海关规则(待整理)
  • 危险品知识(待整理)
  • 组件设计文档(待整理)
  • 数据服务

    • 商品归类服务(待开发)
    • RECP贸易服务(待开发)
    • 商品价格服务(待开发)
    • 业务申报解答(待开发)
    • 报关单状态查询(待开发)
  • 常用开发工具

    • BASE64编解码工具 (opens new window)
    • MD5编码工具 (opens new window)
    • AES/DES加解密 (opens new window)
    • JWT解码工具 (opens new window)
    • ASCII编解码工具 (opens new window)
    • Unicode编解码工具 (opens new window)
    • UTF-8编解码工具 (opens new window)
    • 字符串编解码工具 (opens new window)
    • 通用进制转换工具 (opens new window)
    • 浮点数十进制转换 (opens new window)
    • 在线JSON解析 (opens new window)
    • 在线JS代码格式化工具 (opens new window)
    • CSS可视化工具 (opens new window)
    • XML格式化工具
    • SQL压缩/格式化工具 (opens new window)
    • JSON/XML在线转换 (opens new window)
    • JSON/YAML在线转换 (opens new window)
    • IP地址查询 (opens new window)
    • HTTP在线接口测试 (opens new window)
    • UUID在线生成器 (opens new window)
    • 随机数生成器 (opens new window)
    • 在线文本比对 (opens new window)
  • 研发标准规范(待整理)
  • 国产化适配
首页
  • 天宫体系

    • 前端架构
    • 后端架构
    • 扩展功能
    • 打包部署
    • 更新日志
    • 辅助开发平台 (opens new window)
    • 权限平台部署包下载 (opens new window)
  • 基础组件

    • 工作流引擎(待整理)
    • 跨境加签客户端(待整理)
    • 权限平台(待整理)
  • 数字化工具

    • 数字魔方
    • 数据采集
    • 智能导入
    • 数字员工
    • 规则引擎(开发中)
    • 消息引擎(待开发)
    • 智能导出(待开发)
  • 业务算法

    • 南京业务体检(待整理)
    • 智慧长江(待整理)
  • 识别模型

    • 空箱识别(待整理)
    • 智能客服(待整理)
    • OCR识别(待整理)
    • 车牌识别(待整理)
    • 超市停留识别(待整理)
    • 危险品识别(待开发)
    • 超长车识别(待开发)
    • 车辆靠台(待开发)
    • 车辆占用(待开发)
  • 算法模型(待整理)
  • 风控模型(待整理)
  • 海关规则(待整理)
  • 危险品知识(待整理)
  • 组件设计文档(待整理)
  • 数据服务

    • 商品归类服务(待开发)
    • RECP贸易服务(待开发)
    • 商品价格服务(待开发)
    • 业务申报解答(待开发)
    • 报关单状态查询(待开发)
  • 常用开发工具

    • BASE64编解码工具 (opens new window)
    • MD5编码工具 (opens new window)
    • AES/DES加解密 (opens new window)
    • JWT解码工具 (opens new window)
    • ASCII编解码工具 (opens new window)
    • Unicode编解码工具 (opens new window)
    • UTF-8编解码工具 (opens new window)
    • 字符串编解码工具 (opens new window)
    • 通用进制转换工具 (opens new window)
    • 浮点数十进制转换 (opens new window)
    • 在线JSON解析 (opens new window)
    • 在线JS代码格式化工具 (opens new window)
    • CSS可视化工具 (opens new window)
    • XML格式化工具
    • SQL压缩/格式化工具 (opens new window)
    • JSON/XML在线转换 (opens new window)
    • JSON/YAML在线转换 (opens new window)
    • IP地址查询 (opens new window)
    • HTTP在线接口测试 (opens new window)
    • UUID在线生成器 (opens new window)
    • 随机数生成器 (opens new window)
    • 在线文本比对 (opens new window)
  • 研发标准规范(待整理)
  • 国产化适配
  • 天宫架构

    • 前端架构

    • 后端架构

    • 打包部署

    • 扩展功能

      • 整合H4A
      • E-开发助手
      • 加密
      • 基础功能
      • 前端微应用
        • 快速入门
          • 前端
          • 1. 作为主应用使用
          • 1.1. 启用微前端框架
          • 1.2. 配置加载的子应用
          • 1.3. 添加子应用菜单
          • 2. 作为子应用使用
          • 2.1. 配置子应用
          • 2.2. 打包生产环境服务配置
          • 后端
        • 常见问题
          • 主应用
          • 1. 和子应用通信
          • 1.1 . 触发子应用事件
          • 1.2. 监听子应用触发的事件
          • 2. 路由跳转
          • 2.1. 纯主应用菜单跳转
          • 2.2. 主应用跳转主/子应用菜单
          • 子应用
          • 1. 和主应用通信
          • 1.1. 触发主应用事件
          • 1.2. 监听主应用触发的事件
          • 2. 子应用路由跳转
          • 3. 子应用项目添加自定义路由
      • 运维监控功能
      • 天宫EXCEL

    • 业务组件

    • 国际化

    • 迁移助手

    • 历史版本

    • 更新日志

    • 开发手册

    • 权限平台

  • 基础架构
  • 天宫架构
  • 扩展功能
2023-07-26
目录

前端微应用

# 前端微应用

# 快速入门

# 前端

# 1. 作为主应用使用

# 1.1. 启用微前端框架
# .env文件
# 是否接入微前端框架 0:不接入,1:接入
VITE_TG_USE_WUJIE = '1'
1
2
3
# 1.2. 配置加载的子应用

(注意.env 文件内的值不支持换行,数组对象需JSON格式)

# .env文件
# 接入微前端后配置需要加载的子应用
# [{
#  "sysName":"系统1名称",
#  "appName":"appName1",
#  "isHash":true,
#  "appUrl": {
#       "development":"http://localhost:8080",
#       "testing":"http://localhost:8081",
#       "production":"http://localhost:8082"
#  }}]
VITE_TG_WUJIE_CONFIG = [{"sysName":"子应用1名称","appName":"appName1","isHash":true,"appUrl"{"development":"http://localhost:8080","testing":"http://localhost:8081","production":"http://localhost:8082"}},{"sysName":"子应用2名称","appName":"appName2","isHash":true,"appUrl"{"development":"http://localhost:9080","testing":"http://localhost:9081","production":"http://localhost:9082"}}]
1
2
3
4
5
6
7
8
9
10
11
12
字段 描述 类型 是否必填 默认值 备注
sysName 子应用系统名称 string 是 -- --
appName 子应用名称 string 是 -- 需保持唯一
isAlive 是否保活模式 boolean 否 true 设置成不保活后,会增加子应用白屏时间
isHash 子应用是否 hash 路由 boolean 否 true 如果子应用为 histroy 路由,请设置成 false
appUrl 子应用的 url object 否 -- 根据环境配置不同 url
# 1.3. 添加子应用菜单
  • 在权限平台或 H4A 平台配置菜单信息,路径名称等都和子应用原本的菜单配置一致,"选项配置"需要配置子应用名称
    选项配置的值需为"JSON"格式的字符串: {"appName": "nameOfApp"}
    示例:

# 2. 作为子应用使用

# 2.1. 配置子应用
# .env文件
# 此系统作为子应用时的名称,名称唯一,不能和需要接入的主应用的其它子应用名称重复
VITE_TG_SUB_APP_NAME = "appName1"
1
2
3
# 2.2. 打包生产环境服务配置

子应用的资源和接口的请求都在主域名发起,所以会有跨域问题,子应用必须对服务器资源代理配置 如果是nginx项目,可以如下改造:

server {
    location / {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
    }
}
1
2
3
4
5
6
7

# 后端

如下设置需要设置为相同值

微应用back001

# 常见问题

# 主应用

# 1. 和子应用通信

# 1.1 . 触发子应用事件
import { emitMain } from '@/tiangong_core/utils/wujie/wujieMain/busMain';

// 如业务需要修改子应用的标题,可以触发'titleChange'事件
const onClick = (title) => {
    emitMain('titleChange',title);
}
1
2
3
4
5
6
# 1.2. 监听子应用触发的事件
import { onMain } from '@/tiangong_core/utils/wujie/wujieMain/busMain';

// 如需要监听子应用触发的修改系统名称事件
const sysName = ref('系统名');
// 业务使用
onMain('sysNameChange',(sysName) => {
    sysName.value = sysName
    // do something
});
1
2
3
4
5
6
7
8
9

# 2. 路由跳转

# 2.1. 纯主应用菜单跳转

正常跳转即可

# 2.2. 主应用跳转主/子应用菜单
// `useWujieRouter` hook 返回`customRouterPush`方法  该方法接收需要跳转的菜单对象
import useWujieRouter from '@core/utils/wujie/useWujieRouter';
const { customRouterPush } = useWujieRouter();

const onClick = menu => {
    customRouterPush(menu);
};
1
2
3
4
5
6
7

customRouterPush接收的menu参数对象字段:

字段 描述 类型 是否必填 默认值 备注
options 跳转的路由选项配置 string 否 -- 如果有 options 且配置了 appName,则表示跳转到子应用路由
path 跳转的路由路径 string 是 -- --
menuPath 跳转的路由路径 string 是 -- path 和 menuPath 使用其中一个即可,有两个是为了兼容使用 menuPath 的地方
query 跳转的路由参数 object 否 -- --

使用customRouterPush方法跳转子应用菜单时,需要确保menu参数有选项配置字段,如果没有选项配置(options),则需要添加

// 如业务组件中 工作台 的 常用功能
const getList = (query) => {
    wlCommonMenuSlect(query).then((res) => {
        // 后台返回的快捷菜单入口
        _WorkTableValueArr.forEach(item => {
            // _menuInfoall 为扁平化系统菜单
            _menuInfoall.forEach(e => {
                if (e.name == item.menuName) {
+                    item.options = e.options;
                }
            })
        })
    })
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 子应用

# 1. 和主应用通信

# 1.1. 触发主应用事件
import { emitSub } from '@/tiangong_core/utils/wujie/wujieSub/busSub';

// 如业务需要修改父应用的系统名称,可以触发'titleChange'事件
const onClick = (sysName) => {
    emitSub('sysNameChange',sysName);
}
1
2
3
4
5
6
# 1.2. 监听主应用触发的事件
import { onSub } from '@/tiangong_core/utils/wujie/wujieSub/busSub';

// 如需要监听父应用触发的修改标题事件
const title = ref('title');
// 业务使用
onSub('titleChange',(title) => {
    title.value = title;
    // do something
});
1
2
3
4
5
6
7
8
9

# 2. 子应用路由跳转

子应用内部业务自定义路由跳转(父应用地址栏,标签页等状态需要同步更新)

// 该方法接收需要跳转的菜单对象,使用方法,参数对象同父应用
import useWujieRouter from '@core/utils/wujie/useWujieRouter';
const onClick = menu => {
    customRouterPush(menu);
};
1
2
3
4
5

# 3. 子应用项目添加自定义路由

项目作为子应用时,子应用只加载系统菜单选项配置字段配置了appName,且appName和子应用appName的值一样的菜单

// 如子应用的**工作台**,可能会将所有菜单都加载到**常用功能**,点击常用功能跳转到子应用的其它页面:
- menuInfo.forEach((item, i) => {
-     item.children.forEach((o, j) => {
-         // 所有菜单(包括主应用的)加入常用功能列表
-         WorkTableValueArr.push(o)
-     })
- })

+ import { APP_NAME,__POWERED_BY_WUJIE__ } from '@core/utils/wujie/wujieSub';
+ // 判断是否子应用环境
+ if(__POWERED_BY_WUJIE__){
+     menuInfo.forEach((item, i) => {
+       item.children.forEach((o, j) => {
+         const options = JSON.parse(o.options || '{}');
+         // 判断appName
+         if(options.appName === APP_NAME){
+             // 只将子应用的菜单加入工作台
+             WorkTableValueArr.push(o)
+         }
+         if(o.children){
+             // 多层菜单处理,如果有更多层可以递归处理
+             o.children.forEach((child, j) => {
+                 const options = JSON.parse(child.options || '{}');
+                 if(options.appName === APP_NAME){
+                     WorkTableValueArr.push(child)
+                 }
+             })
+         }
+       })
+     })
+ }else {
+     // 非子应用环境 使用原逻辑
+     menuInfo.forEach((item, i) => {
+         item.children.forEach((o, j) => {
+             WorkTableValueArr.push(o)
+         })
+     })
+ }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
上次更新: 2023/11/12 11:02:35
基础功能
运维监控功能

← 基础功能 运维监控功能→

最近更新
01
EciReport模板导出_Core
09-10
02
EciReport模板导出
09-09
03
Core权限平台接口
07-25
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式