目标

下面我们演示如何在模块test-party中新建一个Block区块。将此区块添加到文章内容当中,可以周期读取当前文章的评论数,并实时显示出来

1. 定义静态资源

模块a-markdown提供了一个资源类型a-markdown:block。我们需要在模块test-party中定义一个静态资源

src/module-vendor/test-party/backend/src/config/static/resources.js

  1. 1module.exports = app => {
  2. 2 const moduleInfo = app.meta.mockUtil.parseInfoFromPackage(__dirname);
  3. 3 const resources = [
  4. 4 // menu
  5. 5 ...
  6. 6 // dashboard widget
  7. 7 ...
  8. 8 // markdown block
  9. 9 {
  10. 10 atomName: 'Article Comment Count',
  11. 11 atomStaticKey: 'blockArticleCommentCount',
  12. 12 atomRevision: 0,
  13. 13 atomCategoryId: 'a-markdown:block.Demonstration',
  14. 14 resourceType: 'a-markdown:block',
  15. 15 resourceConfig: JSON.stringify({
  16. 16 default: {
  17. 17 interval: 1000,
  18. 18 },
  19. 19 validator: {
  20. 20 module: moduleInfo.relativeName,
  21. 21 validator: 'blockArticleCommentCount',
  22. 22 },
  23. 23 }),
  24. 24 resourceRoles: 'root',
  25. 25 },
  26. 26 ];
  27. 27 return resources;
  28. 28};
名称 说明
atomStaticKey 系统自动添加模块名称前缀,生成test-party:blockArticleCommentCount
atomCategoryId 资源归属目录。资源类型全称a-markdown:block作为一级目录
resourceType 资源类型全称
resourceConfig 资源配置信息
resourceRoles 资源授权对象,这里是角色root,意味着所有用户(包括匿名用户)均可访问此资源

更多配置说明,参见静态资源

  • resourceConfig
名称 说明
default 用户在添加区块时,可以显示一个Form表单,用于配置参数。default是Form表单的缺省值
validator Form表单对应的验证器,用于表单渲染数据验证

2. 国际化语言资源

静态资源支持atomName的国际化,只需添加相应的语言资源即可:

src/module-vendor/test-party/backend/src/config/locale/zh-cn.js

  1. 1module.exports = {
  2. 2 ...
  3. 3 'Article Comment Count': '文章评论数',
  4. 4};

3. 注册静态资源

前面定义好一组静态资源,接下来就需要在模块的meta文件中进行注册

src/module-vendor/test-party/backend/src/meta.js

  1. 1const staticResources = require('./config/static/resources.js')(app);
  2. 2base: {
  3. 3 statics: {
  4. 4 'a-base.resource': {
  5. 5 items: staticResources,
  6. 6 },
  7. 7 },
  8. 8},
名称 说明
a-base.resource 原子类型的全称。在这里,原子类型resource是由模块a-base提供的
items 静态资源数组