|
| 1 | +--- |
| 2 | +title: 《低代码引擎资产包协议规范》 |
| 3 | +sidebar_position: 2 |
| 4 | +--- |
1 | 5 | # 《低代码引擎资产包协议规范》 |
2 | 6 |
|
3 | | -# 1 介绍 |
| 7 | +## 1 介绍 |
4 | 8 |
|
5 | | -## 1.1 本协议规范涉及的问题域 |
| 9 | +### 1.1 本协议规范涉及的问题域 |
6 | 10 |
|
7 | 11 | - 定义本协议版本号规范 |
8 | 12 | - 定义本协议中每个子规范需要被支持的 Level |
|
12 | 16 | - 定义低代码资产包协议组件描述资源加载规范(A) |
13 | 17 | - 定义低代码资产包协议组件在面板展示规范(AA) |
14 | 18 |
|
15 | | -## 1.2 协议草案起草人 |
| 19 | +### 1.2 协议草案起草人 |
16 | 20 |
|
17 | 21 | - 撰写:金禅、璿玑、彼洋 |
18 | 22 | - 审阅:力皓、絮黎、光弘、戊子、潕量、游鹿 |
19 | 23 |
|
20 | | -## 1.3 版本号 |
| 24 | +### 1.3 版本号 |
21 | 25 |
|
22 | 26 | 1.1.0 |
23 | 27 |
|
24 | | -## 1.4 协议版本号规范(A) |
| 28 | +### 1.4 协议版本号规范(A) |
25 | 29 |
|
26 | 30 | 本协议采用语义版本号,版本号格式为 `major.minor.patch` 的形式。 |
27 | 31 |
|
28 | 32 | - major 是大版本号:用于发布不向下兼容的协议格式修改 |
29 | 33 | - minor 是小版本号:用于发布向下兼容的协议功能新增 |
30 | 34 | - patch 是补丁号:用于发布向下兼容的协议问题修正 |
31 | 35 |
|
32 | | -## 1.5 协议中子规范 Level 定义 |
| 36 | +### 1.5 协议中子规范 Level 定义 |
33 | 37 |
|
34 | 38 | | 规范等级 | 实现要求 | |
35 | 39 | | -------- | ------------------------------------------------------------ | |
36 | 40 | | A | 基础规范,低代码引擎核心层支持; | |
37 | 41 | | AA | 推荐规范,由低代码引擎官方插件、setter 支持。 | |
38 | 42 | | AAA | 参考规范,需由基于引擎的上层搭建平台支持,实现可参考该规范。 | |
39 | 43 |
|
40 | | -## 1.6 名词术语 |
| 44 | +### 1.6 名词术语 |
41 | 45 |
|
42 | 46 | - **资产包**: 低代码引擎加载资源的动态数据集合,主要包含组件及其依赖的资源、组件低代码描述、动态插件/设置器资源等。 |
43 | 47 |
|
44 | | -## 1.7 背景 |
| 48 | +### 1.7 背景 |
45 | 49 |
|
46 | 50 | 根据低代码引擎的实现,一个组件要在引擎上渲染和配置,需要提供组件的 umd 资源以及组件的`低代码描述`,并且组件通常都是以集合的形式被引擎消费的;除了组件之外,还有组件的依赖资源、引擎的动态插件/设置器等资源也需要注册到引擎中;因此我们定义了“低代码资产包”这个数据结构,来描述引擎所需加载的动态资源的集合。 |
47 | 51 |
|
48 | | -## 1.8 受众 |
| 52 | +### 1.8 受众 |
49 | 53 |
|
50 | 54 | 本协议适用于使用“低代码引擎”构建搭建平台的开发者,通过本协议的定义来进行资源的分类和加载。阅读及使用本协议,需要对低代码搭建平台的交互和实现有一定的了解,对前端开发相关技术栈的熟悉也会有帮助,协议中对通用的前端相关术语不会做进一步的解释说明。 |
51 | 55 |
|
52 | | -# 2 协议结构 |
| 56 | +## 2 协议结构 |
53 | 57 |
|
54 | 58 | 协议最顶层结构如下,包含 7 方面的描述内容: |
55 | 59 |
|
|
61 | 65 | - setters { Array } 设计器中设置器描述协议列表 |
62 | 66 | - extConfig { Object } 平台自定义扩展字段 |
63 | 67 |
|
64 | | -## 2.1 version(A) |
| 68 | +### 2.1 version(A) |
65 | 69 |
|
66 | 70 | 定义当前协议 schema 的版本号; |
67 | 71 |
|
68 | 72 | | 根属性名称 | 类型 | 说明 | 变量支持 | 默认值 | |
69 | 73 | | ---------- | ------ | ---------- | -------- | ------ | |
70 | 74 | | version | String | 协议版本号 | - | 1.1.0 | |
71 | 75 |
|
72 | | -## 2.2 packages(A) |
| 76 | +### 2.2 packages(A) |
73 | 77 |
|
74 | 78 | 定义低代码编辑器中加载的资源列表,包含公共库和组件(库) cdn 资源等; |
75 | 79 |
|
|
81 | 85 | | packages[].version | npm 包版本号 | String | A | 组件资源版本号 | |
82 | 86 | | packages[].type | 资源包类型 | String | AA | 取值为: proCode(源码)、lowCode(低代码,默认为 proCode | |
83 | 87 | | packages[].schema | 低代码组件 schema 内容 | object | AA | 取值为: proCode(源码)、lowCode(低代码) | |
84 | | -| packages[].deps | 当前资源包的依赖资源的唯一标识列表 | Array<String> | A | 唯一标识为 id 或者 package 对应的值 | |
| 88 | +| packages[].deps | 当前资源包的依赖资源的唯一标识列表 | Array<String\> | A | 唯一标识为 id 或者 package 对应的值 | |
85 | 89 | | packages[].library | 作为全局变量引用时的名称,用来定义全局变量名 | String | A | 低代码引擎通过该字段获取组件实例 | |
86 | | -| packages[].editUrls | 组件编辑态视图打包后的 CDN url 列表,包含 js 和 css | Array<String> | A | 低代码引擎编辑器会加载这些 url | |
87 | | -| packages[].urls | 组件渲染态视图打包后的 CDN url 列表,包含 js 和 css | Array<String> | AA | 低代码引擎渲染模块会加载这些 url | |
| 90 | +| packages[].editUrls | 组件编辑态视图打包后的 CDN url 列表,包含 js 和 css | Array<String\> | A | 低代码引擎编辑器会加载这些 url | |
| 91 | +| packages[].urls | 组件渲染态视图打包后的 CDN url 列表,包含 js 和 css | Array<String\> | AA | 低代码引擎渲染模块会加载这些 url | |
88 | 92 | | packages[].advancedEditUrls | 组件多个编辑态视图打包后的 CDN url 列表集合,包含 js 和 css | Object | AAA | 上层平台根据特定标识提取某个编辑态的资源,低代码引擎编辑器会加载这些资源,优先级高于 packages[].editUrls | |
89 | 93 | | packages[].advancedUrls | 组件多个端的渲染态视图打包后的 CDN url 列表集合,包含 js 和 css | Object | AAA | 上层平台根据特定标识提取某个渲染态的资源, 低代码引擎渲染模块会加载这些资源,优先级高于 packages[].urls | |
90 | 94 | | packages[].external | 当前资源在作为其他资源的依赖,在其他依赖打包时时是否被排除了(同 webpack 中 external 概念) | Boolean | AAA | 某些资源会被单独提取出来,是其他依赖的前置依赖,根据这个字段决定是否提前加载该资源 | |
91 | | -| packages[].loadEnv | 指定当前资源加载的环境 | Array<String> | AAA | 主要用于指定 external 资源加载的环境,取值为 design(设计态)、runtime(预览态)中的一个或多个 | |
| 95 | +| packages[].loadEnv | 指定当前资源加载的环境 | Array<String\> | AAA | 主要用于指定 external 资源加载的环境,取值为 design(设计态)、runtime(预览态)中的一个或多个 | |
92 | 96 | | packages[].exportSourceId | 标识当前 package 内容是从哪个 package 导出来的 | String | AAA | 此时 urls 无效 | |
93 | 97 | | packages[].exportSourceLibrary | 标识当前 package 是从 window 上的哪个属性导出来的 | String | AAA | exportSourceId 的优先级高于exportSourceLibrary ,此时 urls 无效 | |
94 | 98 | | packages[].async | 标识当前 package 资源加载在 window.library 上的是否是一个异步对象 | Boolean | A | async 为 true 时,需要通过 await 才能拿到真正内容 | |
95 | | -| packages[].exportMode | 标识当前 package 从其他 package 的导出方式 | String | A | 目前只支持 `"functionCall"`, exportMode等于 `"functionCall"` 时,当前package 的内容以函数的方式从其他 package 中导出,具体导出接口如: (library: string, packageName: string, isRuntime?: boolean) => any | Promise<any>, library 为当前 package 的 library, packageName 为当前的包名,返回值为当前 package 的导出内容 | |
| 99 | +| packages[].exportMode | 标识当前 package 从其他 package 的导出方式 | String | A | 目前只支持 `"functionCall"`, exportMode等于 `"functionCall"` 时,当前package 的内容以函数的方式从其他 package 中导出,具体导出接口如: (library: string, packageName: string, isRuntime?: boolean) => any | Promise<any\>, library 为当前 package 的 library, packageName 为当前的包名,返回值为当前 package 的导出内容 | |
96 | 100 |
|
97 | 101 | 描述举例: |
98 | 102 |
|
|
294 | 298 | } |
295 | 299 | ``` |
296 | 300 |
|
297 | | -## 2.3 components (A) |
| 301 | +### 2.3 components (A) |
298 | 302 |
|
299 | 303 | 定义资产包中包含的所有组件的低代码描述的集合,分为“ComponentDescription”和“RemoteComponentDescription”(详见 2.6 TypeScript 定义): |
300 | 304 |
|
301 | 305 | - ComponentDescription: 符合“组件描述协议”的数据,详见物料规范中`2.2.2 组件描述协议`部分; |
302 | 306 | - RemoteComponentDescription 是将一个或多个 ComponentDescription 构建打包的 js 资源的描述,在浏览器中加载该资源后可获取到其中包含的每个组件的 ComponentDescription 的具体内容; |
303 | 307 |
|
304 | | -## 2.4 sort (AA) |
| 308 | +### 2.4 sort (AA) |
305 | 309 |
|
306 | 310 | 定义组件列表分组 |
307 | 311 |
|
|
310 | 314 | | sort.groupList | String[] | 组件分组,用于组件面板 tab 展示 | - | ['精选组件', '原子组件'] | |
311 | 315 | | sort.categoryList | String[] | 组件面板中同一个 tab 下的不同区间用 category 区分,category 的排序依照 categoryList 顺序排列 | - | ['通用', '数据展示', '表格类', '表单类'] | |
312 | 316 |
|
313 | | -## 2.5 plugins (AAA) |
| 317 | +### 2.5 plugins (AAA) |
314 | 318 |
|
315 | 319 | 自定义设计器插件列表 |
316 | 320 |
|
|
325 | 329 | | plugins[].keywords | String[] | 插件检索关键字 | - | - | |
326 | 330 | | plugins[].reference | Reference | 插件引用的资源包信息 | - | - | |
327 | 331 |
|
328 | | -## 2.6 setters (AAA) |
| 332 | +### 2.6 setters (AAA) |
329 | 333 |
|
330 | 334 | 自定义设置器列表 |
331 | 335 |
|
|
340 | 344 | | setters[].keywords | String[] | 设置器检索关键字 | - | - | |
341 | 345 | | setters[].reference | Reference | 设置器引用的资源包信息 | - | - | |
342 | 346 |
|
343 | | -## 2.7 extConfig (AAA) |
| 347 | +### 2.7 extConfig (AAA) |
344 | 348 |
|
345 | 349 | 定义平台相关的扩展内容,用于存放平台自身实现的一些私有协议, 以允许存量平台能够平滑地迁移至标准协议。 extConfig 是一个 key-value 结构的对象,协议不会规定 extConfig 中的字段名称以及类型, 完全自定义 |
346 | 350 |
|
347 | | -## 2.8 TypeScript 定义 |
| 351 | +### 2.8 TypeScript 定义 |
348 | 352 |
|
349 | 353 | _组件低代码描述相关部分字段含义详见物料规范中`2.2.2 组件描述协议`部分;_ |
350 | 354 |
|
@@ -463,19 +467,19 @@ export interface Package { |
463 | 467 | */ |
464 | 468 | exportName?: string; |
465 | 469 | /** |
466 | | - * 标识当前 package 资源加载在 window.library 上的是否是一个异步对象 |
| 470 | + * 标识当前 package 资源加载在 window.library 上的是否是一个异步对象 |
467 | 471 | */ |
468 | 472 | async?: boolean; |
469 | 473 | /** |
470 | 474 | * 标识当前 package 从其他 package 的导出方式 |
471 | 475 | */ |
472 | 476 | exportMode?: string; |
473 | 477 | /** |
474 | | - * 标识当前 package 内容是从哪个 package 导出来的 |
| 478 | + * 标识当前 package 内容是从哪个 package 导出来的 |
475 | 479 | */ |
476 | 480 | exportSourceId?: string; |
477 | 481 | /** |
478 | | - * 标识当前 package 是从 window 上的哪个属性导出来的 |
| 482 | + * 标识当前 package 是从 window 上的哪个属性导出来的 |
479 | 483 | */ |
480 | 484 | exportSourceLibrary?: string; |
481 | 485 | } |
@@ -684,4 +688,4 @@ export interface ComponentSchema { |
684 | 688 |
|
685 | 689 | ``` |
686 | 690 |
|
687 | | -`ComponentSchema` 的定义见[低代码业务组件描述](./1.material-spec.md#221-组件规范) |
| 691 | +`ComponentSchema` 的定义见[低代码业务组件描述](./material-spec.md#221-组件规范) |
0 commit comments