• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1## 新增或修改组件规则
2
3#### 概述:
4
5当新增或更新组件和属性时,需要在compiler/src/components目录下新增或修改对应的json文件。
6
7同时我们将公共属性放入compiler/components/common_attrs.json文件中,若要更新公共属性在该文件下修改即可。
8
9组件形式如下:
10
11```gn
12{
13  "name": string,
14  "attrs": [],
15  "atomic": boolean,
16  "parents": [],
17  "children": [],
18  "single": boolean,
19  "noDebugLine": boolean,
20  "systemApi": boolean,
21}
22```
23
24| 参数                                             | 参数描述                            |
25| ------------------------------------------------ | ----------------------------------- |
26| name(必须)                                       | 组件名称                            |
27| attrs(组件必须, 若没有私有属性对应value写空数组) | 组件属性                            |
28| atomic(可选,默认false)                          | 是否不能有子组件                    |
29| parents(可选,默认所有组件可用)                  | 父组件只能是哪些组件                |
30| children(可选,默认所有组件可用)                 | 子组件只能是哪些组件                |
31| single(可选,默认false)                          | 是否只能包含一个子组件              |
32| noDebugLine(可选,默认false)                     | 预览模式下对应组件是否生成debugline |
33| systemApi(可选,默认false)                     | 不想在public sdk内添加该组件请将该属性设置为true |
34
35#### 模块结构:
36
37```mermaid
38classDiagram
39      Component_Map <|-- List
40      Component_Map <|-- TextArea
41      Component_Map <|-- AlphabetIndexer
42      Component_Map <|-- Others
43      class List{
44          name,
45  		  attrs,
46  	      atomic?,
47  	      children?,
48  	      parents?,
49  	      single?,
50  	      noDebugLine?
51      }
52      class TextArea{
53          name,
54  	      attrs,
55  	      atomic?,
56  	      children?,
57  	      parents,
58  	      single?,
59  	      noDebugLine?
60      }
61      class AlphabetIndexer{
62          name,
63  		  attrs,
64  		  atomic?,
65  		  children?,
66  		  parents,
67  	      single?,
68  	      noDebugLine?
69      }
70
71```
72
73#### 文件结构:
74
75```bash
76ace_ets2bundle/compiler
77	├── src
78   		├── component_map
79	├── components
80   		├── Option
81   		├── Line
82		├── Gauge
83   		....
84```
85