资源分类
资源主要分两类:
动态资源
:在系统运行当中,通过管理界面创建的资源静态资源
:通过代码管理资源数据,当系统启动时,自动初始化到数据库中静态资源
是在静态原子
的基础上实现的,请参见:静态原子
菜单是一种资源
前面已经提到,菜单是一种资源,因此,可以通过创建静态资源
的方式来创建菜单。下面,我们以模块test-party
为例,创建一个菜单:
定义静态资源(菜单)
定义一个静态资源
数组
src/suite-vendor/test-party/modules/test-party/backend/src/config/static/resources.js
- 1module.exports = app => {
- 2 const moduleInfo = app.meta.mockUtil.parseInfoFromPackage(__dirname);
- 3 const resources = [
- 4 // menu
- 5 {
- 6 atomName: 'Kitchen-sink',
- 7 atomStaticKey: 'kitchenSink',
- 8 atomRevision: 1,
- 9 atomCategoryId: 'a-base:menu.Tools',
- 10 resourceType: 'a-base:menu',
- 11 resourceConfig: JSON.stringify({
- 12 actionModule: moduleInfo.relativeName,
- 13 actionPath: 'kitchen-sink/index',
- 14 }),
- 15 resourceIcon: ':business:kitchen-set',
- 16 appKey: 'test-party:appParty',
- 17 resourceRoles: 'root',
- 18 },
- 19 ];
- 20 return resources;
- 21};
-
atomName
:资源名称,支持语言国际化。在这里,我们的菜单名称是Kitchen-sink
-
atomStaticKey
:系统会自动添加模块名称作为前缀,从而形成系统唯一的原子Key,比如这里的:test-party:kitchenSink
-
atomRevision
: 从0开始。当静态资源有任何属性变更时,将atomRevision
依次递增,系统就会自动更新数据库里的数据 -
atomCategoryId
: 资源归属目录- 基本格式为:
{资源类型全称}.{级联目录}
- 资源类型全称:模块
a-base
提供了一个资源类型menu
,全称为a-base:menu
。由于不同模块提供的资源类型统一管理,所以,以资源类型全称
作为第一级目录,便于资源目录的分类管理 - 级联目录:是以
.
相连的多级目录 - 系统会自动解析目录结构得到
目录Id
,如果目录不存在会自动创建
- 基本格式为:
-
resourceType
: 资源类型全称。在这里,菜单的资源类型就是a-base:menu
-
resourceConfig
: 资源配置信息。不同类型的资源有不同的结构约定 -
resourceConfig.actionModule + actionPath
: 这是菜单资源的定义方式:当点击菜单项时,跳转前端页面的路径 -
resourceIcon
:资源图标,比如:菜单资源的图标 -
appKey
:App应用的atomStaticKey。在这里,是宴会应用test-party:appParty
- 将菜单资源与App应用关联,从而决定App应用显示哪些菜单资源。参见:App应用
-
resourceRoles
: 指定资源授权对象。系统会自动解析角色名称得到角色Id,并进行资源授权。有以下可选值:- 简单角色名,如
authenticated
- 级联角色名,如
template.system
- 逗号分隔的多个角色名,如
authenticated,template.system
- 简单角色名,如
注册静态资源(菜单)
前面定义好一组静态资源
,接下来就需要在模块的meta
文件中进行注册
src/suite-vendor/test-party/modules/test-party/backend/src/meta.js
- 1const staticResources = require('./config/static/resources.js')(app);
- 2
- 3base: {
- 4 statics: {
- 5 'a-base.resource': {
- 6 items: staticResources,
- 7 },
- 8 },
- 9},
名称 | 说明 |
---|---|
a-base.resource | 原子类型的全称。在这里,原子类型resource 是由模块a-base 提供的 |
items | 静态资源数组 |
评论: