更新时间:2025-12-30 GMT+08:00
分享

自定义组件配置说明(components)

UI引擎的物料协议文件中,“components”数组中的每个对象对应一个自定义组件。以下是其核心配置项的详细说明:

组件基本信息配置

组件基本信息是识别和加载自定义组件的基础,核心配置项如下所示:

表1 ComponentConfig

属性名称

值类型

是否必填

说明

name

Object<NameConfig>

Y

组件的名称,请参见表2

version

String

Y

组件的版本号。

component

String

Y

组件在使用时的标签名,需与JS文件中导出组件的名称一致。

icon

String

N

组件在物料面板显示的图标。

description

String

N

组件功能描述信息。

devMode

String

N

开发模式,固定值为“proCode”

npm

Object<NpmConfig>

Y

组件导入配置,请参见表3

group

String

Y

组件所属分组标识(需与“snippets”中的“group”一致)。

category

String

N

组件分类(自定义,如“业务组件”“基础组件”)。

schema

Object<SchemaConfig>

Y

组件元数据配置,包括属性、插槽、事件等,请参见表4

多语言配置

用于定义组件的多语言显示名称,确保不同语言环境下的友好展示。

表2 NameConfig

属性名称

值类型

是否必填

说明

zh_CN

String

Y

组件的中文名称。

en_US

String

N

组件的英文名称。

组件导入配置

定义UI引擎如何导入自定义组件,是组件加载的核心配置。

表3 NpmConfig

属性名称

值类型

是否必填

说明

package

String

N

组件库对应的包名。

如果是通过npm安装的组件库,则此项必填。

exportName

String

Y

组件的名称,需与表1中的“component”保持一致。

version

String

N

组件的版本号。

destructuring

Boolean

Y

组件是否需要解构导入,建议固定为true。

script

String

N

组件的CDN地址。

组件元数据配置

“schema”字段定义组件在UI引擎属性面板中的可配置项,即使无相关配置,也需传入空值(空数组/空对象)。

表4 SchemaConfig

属性名称

值类型

是否必填

说明

properties

Array<PropertyGroup>

Y

组件的属性配置。

如果组件无属性,则至少需要传入一个空数组。

slots

Object<SlotConfig>

Y

组件提供的插槽列表。

如果无插槽,则需要配置一个空对象。

events

Object<EventConfig>

Y

组件提供的事件列表。

如果无事件,则需要配置一个空对象。

configure

Object<ComponentMetaConfig>

N

组件提供的元信息配置。

属性配置(schema.properties)

“properties”是属性分组数组,每个元素对应“属性”设置面板中的一个可折叠分组(如“基础属性”)。核心配置如下:

表5 PropertyGroup(属性分组)

属性名称

值类型

是否必填

说明

name

String

Y

分组的唯一标识。

label

Object<NameConfig>

Y

分组的显示名称(如“基础属性”),请参见多语言配置

content

Array<PropertyConfig>

Y

每个属性的配置对象组成的数组。

每个对象对应属性面板中的一个可配置项,核心配置如下:

表6 PropertyConfig(单个属性配置)

属性名称

值类型

是否必填

说明

property

String

Y

属性的名称,需与表8“props”字段定义的属性名称保持一致。

label

Object<LabelConfig>

Y

属性在UI引擎“属性”面板显示的标签名。

labelPosition

Enum

N

标签的位置,备选值为“left”“top”,默认为“top”

description

Object<NameConfig>

N

属性的说明。

配置后鼠标悬浮在标签上会以“tooltip”方式显示说明内容。

bindState

Boolean

N

是否支持状态变量绑定。开启后,属性后显示绑定按钮()。

widget

Object<WidgetConfig>

Y

属性配置器组件,请参见表8

disabled

Boolean

N

是否禁用该属性配置。

defaultValue

Any

N

属性配置器的默认值。

注意:此配置项仅对配置器有效,不一定作用于属性的默认值

“LabelConfig”定义属性在属性面板中显示的文字,核心配置如下:

表7 LabelConfig(属性标签配置)

属性名称

值类型

是否必填

说明

text

Object<NameConfig>

Y

属性面板显示的文字。

“WidgetConfig”定义属性配置器的具体配置,核心配置如下:

表8 WidgetConfig(配置器组件配置)

属性名

值类型

是否必填

说明

component

String

Y

配置器组件对应的名称(如MetaInput、MetaSwitch),请参见内置配置器组件参考

props

Object

N

传递给配置器组件的属性(如下拉框的options、输入框的maxlength),请参见表1

事件配置(schema.events)

“events”为对象类型,每个属性对应一个事件名,需遵循以下规则:

  • 事件名必须以“on”开头。
  • 中横线连接的事件名需转换为驼峰命名。例如,组件内部发送了一个名为“custom-event”的事件,则在协议中要使用“onCustomEvent”
  • 避免使用下划线拼接多个单词组成的事件名称
  • 触发双向绑定需要使用固定的写法为“onUpdate:modelValue”

事件配置对象结构:

interface EventConfig {
    [onEventName: string]: Object<NameConfig>; // 值为事件多语言名称配置
}
表9 事件配置对象

属性名称

值类型

是否必填

说明

onEventName

Object<NameConfig>

Y

事件要显示的名称配置,请参见表2

插槽配置(schema.slots)

“slots”为对象类型,每个属性对应一个插槽名。结构定义如下:

interface SlotConfig {
    [slotName: string]: {
        "componentName": "slot" | "Template"; // 固定值
        "label": {
            "zh_CN": string; // 插槽中文名称
        }
    }
}

元信息配置(schema.configure)

“configure”是一个可选配置项,用于定义组件的特殊行为、嵌套规则、快捷键等元信息,无特殊需求时需传入空对象“{}”(该属性不可省略)。如需配置,可参考以下示例和说明:

{
  "configure": {
    "isContainer": true,          // 是否为容器组件(如果为true且提供默认插槽,拖入画布时会自动添加插槽占位)
    "isModal": false,             // 是否为带全局遮罩层的组件(如弹窗)
    "isPopper": false,            // 是否为带弹出层的组件(如下拉框)
    "nestingRule": {              // 组件嵌套规则
      "childWhitelist": ["div"],  // 允许的直接子组件类型
      "parentWhitelist": [],      // 允许的父组件类型
      "descendantBlacklist": [],  // 禁止的深层子组件类型
      "ancestorWhitelist": []     // 允许的深层祖先组件类型
    },
    "rootSelector": ".app",       // 画布中选中组件时实际作用的目标节点(支持CSS选择器)
    "shortcuts": {                // 组件快捷键配置
      "properties": [             // 可通过快捷键快速设置的属性名
        "bordered",
        "striped"
      ]
    }
  }
}

相关文档