优维低代码:构件基本说明

EASYOPS_youwei · · 976 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

优维低代码:构件基本说明

 

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。

在上一篇中,我们分享了在编排详解中是如何进行菜单配置的,本期我们将继续来解读编排详解中的构件基本说明。

# 构件配置

"bricks": [
  {
    "brick": "basic-bricks.micro-view",
    "slots": {
      "titleBar": {
        "type": "bricks",
        "bricks": [
          {
            "brick": "basic-bricks.page-title",
            "properties": {
              "pageTitle": "APP 管理"
            }
          }
        ]
      },
      "content": {
        "type": "bricks",
        "bricks": [
          {
            "template": "cmdb-instances.instance-list",
            "params": {
              "objectId": "APP",
              "detailUrlTemplates": {
                "APP": "${APP.homepage}/${instanceId}"
              },
              "presetConfigs": {
                "fieldIds": ["name", "_hierarchy", "businesses", "owner"]
              }
            }
          }
        ]
      }
    }
  }
]

我们开始进入深水区,bricks是一个有序数组,表示一个页面可以有多个构件组成。

我们先来看basic-bricks.micro-view这个构件,将他的配置抽离出来解释:

{
  "brick": "basic-bricks.micro-view",
  "slots": {
    "titleBar": {
      "type": "bricks",
      "bricks": [
        {
          "brick": "basic-bricks.page-title",
          "properties": {
            "pageTitle": "APP 管理"
          }
        }
      ]
    },
    "content": {
      "type": "bricks",
      "bricks": [
        ...
      ]
    }
  }
}

 

◆ brick:表示使用的是哪个构件,其命名格式为
BRICK-PACKAGE-NAME.BRICK-NAME。在原子构件包 及 业务构件包可以查阅到我们目前支持的所有构件

  • 这里我们也可以直接写 html 原生的 tag,比如 div、span、h1 等
  • basic-bricks.micro-view是一个页面框架构件容器,一般在所有页面的最外层都会有这么一个构件,这样可以保证页面的框架布局(如布局位置、间距等),确保标准一致

◆ slots:构件的插槽,插槽的意思是这个构件提供了子构件插入的能力,但插入点的位置会由父构件决定,插槽点用名称来表示。比如basic-bricks.micro-view就提供了 3 个插槽:titleBar、toolbar、content,表示左上角标题位置,右上角工具栏位置,内容位置,具体可查看说明文档。有些构件提供了 slot,有些构件没有,这个要看构件的具体实现。

  • 注意,如果你写了一个不存在的插槽点名称的话,也没关系,会自动追加

◆ properties:构件的参数配置,具体查看各个构件的说明

  • 如果构件是原生 html 标签,比如 div,他的properties用小写驼峰来作为 key,比如 style、textContent 等

# 模板构件

{
  "template": "cmdb-instances.instance-list",
  "params": {
    "objectId": "APP",
    "detailUrlTemplates": {
      "APP": "${APP.homepage}/#{instanceId}"
    },
    "presetConfigs": {
      "fieldIds": ["name", "_hierarchy", "businesses", "owner"]
    }
  }
}

大伙可能也发现,在bricks还有另外一种不同的写法,这种叫构件模板(Legacy)他是由多个 brick 封装而成的。

  • template:模板是用template来作为 key 的,而不是brick
  •  
  • params:模板的参数是params,而不是properties

# provider 构件

"bricks": [
  {
    "brick": "providers-of-cmdb.cmdb-object-api-get-object-all",
    "bg": true,
  },
  {
    "brick": "presentational-bricks.brick-utils",
    "bg": true,
  },
  {
    "brick": "providers-of-cmdb.instance-api-get-detail",
    "bg": true,
  },
  ...
]

provider 构件是访问后台接口或纯逻辑处理的一种特殊构件,它不会有实际可见的页面,一个provider构件就对应一个后台接口,是给其他构件提供数据的,详细使用请见[构件参数传递](
/next-docs/docs/micro-app/brick-property#参数来源于 useresolves(后台接口))。

  • bg:表示该构件会被放到一个看不见的背景(background)容器里
  • properties:同样 provider 构件也可以设置其properties,里面只有一个唯一参数args。
{
  "brick": "providers-of-cmdb.cmdb-object-api-get-object-all",
  "bg": true,
  "injectDeep": true,
  "properties": {
    "args": []
  }
}

更多 provider 说明见Provider 构件,另外,Provider 列表页面列举了当前框架内置的 provider 构件。

在bricks里面去定义provider是之前的写法,新的写法可以更简洁,直接在路由层级定义。如:

{
  "path": "${APP.homepage}/demo/cmdb-instance-crud/:instanceId",
  "providers": [
    "providers-of-cmdb.cmdb-object-api-get-object-all",
    "providers-of-cmdb.instance-api-get-detail"
  ],
  "bricks": [
    ...
  ]
}

本期低代码技术干货就分享到这里!


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

976 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传