微应用 API

更新时间:2023-08-21 09:33:28下载pdf

微应用暴露一些 API,用以获取运行时的 SaaS 信息,或者协助完成功能开发。

这些 API 挂载在 src/index.tsx 里的 microProps 变量上并对外暴露。API 在微应用被挂载后被赋值,在使用微应用时,确保 API 都可被合理调用。

微应用 API 只能在微应用的组件内使用。

示例

在下列示例中,您可以了解如何在微应用的组件里,使用微应用 API 来获取用户在当前 SaaS 上选择的语种。

示例代码

import { microProps } from 'src'; // 从 src/index.tsx 引入对象

const Page = () => {
  const { tyLang } = microProps;

  return (
    <div className={styled['layout']}>
      <div> 用户选择的语言是: {tyLang}.</div>
    </div>
  );
};

export default Page;

下文将列举暴露的 API 及说明。

base

微应用基础路由,又称 路由前缀,微应用内部路由均基于这个基础路由。

示例代码

const { base } = microProps;
// base => /apps/{微应用实例 id}

每当微应用被应用于一个 SaaS,就会在 SaaS 中产生一个微应用的实例 ID,用作唯一标识。

例如,用户管理 微应用中存在路由 /user/list,如果 用户管理 微应用在 SaaS 中存在 /app/{微应用实例 id} 的前缀,/user/list 便被补全为 /app/{微应用实例 id}/user/list。通过 base,您可获取 SaaS 中微应用实例的前缀。

container

微应用基于主应用容器运行,container 对象是微应用所挂载处的主应用 DOM(Document Object Model)对象。

更多介绍,请参考 名词解释

示例代码

const { container } = microProps;
// container => DOM 对象

getOwnMenu

获取当前微应用的 entry 对象。

示例代码

const { getOwnMenu } = microProps;
const entry = getOwnMenu();
/**
 * {
 *   entry_id: 'x',
 *   entry_name: 'micro-test-app',
 *   micro_app_name: 'micro-test-app',
 *   oem_micro_app_id: 'z',
 *   path: '/app/{微应用实例id}',
 *   sub_entry_list: []
 * }
 */

关于 entry 对象的更多信息,请参考 描述文件entries 章节。

hasPermission

判断用户是否拥有某一个权限点。

请求参数

字段 说明
permissionCode 权限 code。

返回参数

字段 说明
boolean 表示是否有权限操作。

示例代码

const { hasPermission } = microProps;
const canDoUserDelete = hasPermission('USER_DELETE');
// canDoUserDelete: true / false

关于权限标识符的配置信息,请参考 描述文件privileges 章节。

mainHistory

全局 history 对象。您可通过该方法跳转到指定微应用,使用方式和 webApi: history 一致。

示例代码

interface mainHistory {
  push: (path: string, state?: any) => void;
  replace: (path: string, state?: any) => void;
  go: (n: number) => void;
  goBack: () => void;
  goForward: () => void;
}

modifySelectedMenu

通过 path 字段修正左侧选中菜单。

请求参数

字段 说明
path 需要被选中的菜单对应的路径。

返回参数

字段 说明
void N/A

示例代码

const { modifySelectedMenu } = microProps;
modifySelectedMenu('selected_path');

dynamicProps

动态 API 的集合,目前包括 setBreadcrumb,用于设置当前页面的面包屑内容。

示例代码

const { dynamicProps } = microProps;
// 自动设置
dynamicProps.setBreadcrumb([{ type: 'auto' }]);
// 手动指定
dynamicProps.setBreadcrumb([
  { type: 'c', name: 'a', path: 'a' },
  { type: 'c', name: 'b', path: 'b' },
  { type: 'c', name: 'c', path: 'c' },
]);

参数说明

字段 说明
type 类型:
  • auto:表示自动。
  • c:即 custom,表示自定义指定。
name type 为自定义时,需要指定的展示名称。
path type 为自定义时,需要指定的单击面包屑跳转的目标地址。

name

获取微应用唯一标识。

示例代码

const { name } = microProps;
// name => xxx:string