资源分类
资源主要分两类:
动态资源
:在系统运行当中,通过管理界面创建的资源静态资源
:本质上就是静态原子
,当系统启动时,自动初始化到数据库中
下面,我们以模块test-party
为例,对静态资源
进行说明
定义静态资源
定义一个静态资源
数组
src/module/test-party/backend/src/config/static/resources.js
module.exports = app => {
const moduleInfo = app.meta.mockUtil.parseInfoFromPackage(__dirname);
const resources = [
// menu
{
atomName: 'Kitchen-sink',
atomStaticKey: 'kitchenSink',
atomRevision: 0,
atomCategoryId: 'a-base:menu.Demonstration',
resourceType: 'a-base:menu',
resourceConfig: JSON.stringify({
actionModule: moduleInfo.relativeName,
actionPath: 'kitchen-sink/index',
}),
resourceRoles: 'root',
},
];
return resources;
};
-
静态原子的属性清单,与方法
ctx.bean.atom.write
中参数item
的属性清单基本一致,同时包含基础表aAtom
和业务表aResource
的数据 -
atomStaticKey
:系统会自动添加模块名称作为前缀,从而形成系统唯一的原子Key,比如这里的:test-party:kitchenSink
-
atomRevision
: 从0开始。当静态原子有任何属性变更时,将atomRevision
依次递增,系统就会自动更新数据库里的数据 -
atomCategoryId
: 资源归属目录- 基本格式为:
{资源类型全称}.{级联目录}
- 资源类型全称:模块
a-base
提供了一个资源类型menu
,全称为a-base:menu
。由于不同模块提供的资源类型统一管理,所以,以资源类型全称
作为第一级目录,便于资源目录的分类管理 - 级联目录:是以
.
相连的多级目录 - 系统会自动解析目录结构得到目录Id,如果目录不存在会自动创建
- 基本格式为:
-
resourceType
: 资源类型全称 -
resourceConfig
: 资源配置信息。不同类型的资源有不同的结构约定 -
resourceConfig.actionModule + actionPath
: 这是菜单资源的定义方式:当点击菜单项时,跳转前端页面的路径 -
resourceRoles
: 指定资源授权对象。系统会自动解析角色名称得到角色Id,并进行资源授权。有以下可选值:- 简单角色名,如
root
- 级联角色名,如
template.system
- 逗号分隔的多个角色名,如
root,template.system
- 简单角色名,如
注册静态资源
前面定义好一组静态资源
,接下来就需要在模块的meta
文件中进行注册
src/module/test-party/backend/src/meta.js
const staticResources = require('./config/static/resources.js')(app);
base: {
statics: {
'a-base.resource': {
items: staticResources,
},
},
},
名称 | 说明 |
---|---|
a-base.resource | 原子类型的全称。在这里,原子类型resource 是由模块a-base 提供的 |
items | 静态资源数组 |
评论: