自定义组件配置说明(components)
在UI引擎的物料协议文件中,“components”数组中的每个对象对应一个自定义组件。以下是其核心配置项的详细说明:
组件基本信息配置
组件基本信息是识别和加载自定义组件的基础,核心配置项如下所示:
|
属性名称 |
值类型 |
是否必填 |
说明 |
|---|---|---|---|
|
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。 |
组件导入配置
定义UI引擎如何导入自定义组件,是组件加载的核心配置。
|
属性名称 |
值类型 |
是否必填 |
说明 |
|---|---|---|---|
|
package |
String |
N |
组件库对应的包名。 如果是通过npm安装的组件库,则此项必填。 |
|
exportName |
String |
Y |
组件的名称,需与表1中的“component”保持一致。 |
|
version |
String |
N |
组件的版本号。 |
|
destructuring |
Boolean |
Y |
组件是否需要解构导入,建议固定为true。 |
|
script |
String |
N |
组件的CDN地址。 |
组件元数据配置
“schema”字段定义组件在UI引擎属性面板中的可配置项,即使无相关配置,也需传入空值(空数组/空对象)。
属性配置(schema.properties)
“properties”是属性分组数组,每个元素对应“属性”设置面板中的一个可折叠分组(如“基础属性”)。核心配置如下:
|
属性名称 |
值类型 |
是否必填 |
说明 |
|---|---|---|---|
|
name |
String |
Y |
分组的唯一标识。 |
|
label |
Object<NameConfig> |
Y |
分组的显示名称(如“基础属性”),请参见多语言配置。 |
|
content |
Array<PropertyConfig> |
Y |
每个属性的配置对象组成的数组。 |
每个对象对应属性面板中的一个可配置项,核心配置如下:
|
属性名称 |
值类型 |
是否必填 |
说明 |
|---|---|---|---|
|
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”定义属性在属性面板中显示的文字,核心配置如下:
|
属性名称 |
值类型 |
是否必填 |
说明 |
|---|---|---|---|
|
text |
Object<NameConfig> |
Y |
属性面板显示的文字。 |
“WidgetConfig”定义属性配置器的具体配置,核心配置如下:
事件配置(schema.events)
“events”为对象类型,每个属性对应一个事件名,需遵循以下规则:
- 事件名必须以“on”开头。
- 中横线连接的事件名需转换为驼峰命名。例如,组件内部发送了一个名为“custom-event”的事件,则在协议中要使用“onCustomEvent”。
- 避免使用下划线拼接多个单词组成的事件名称
- 触发双向绑定需要使用固定的写法为“onUpdate:modelValue”。
事件配置对象结构:
interface EventConfig {
[onEventName: string]: Object<NameConfig>; // 值为事件多语言名称配置
}
|
属性名称 |
值类型 |
是否必填 |
说明 |
|---|---|---|---|
|
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"
]
}
}
}
