• 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}
21```
22
23| 参数                                             | 参数描述                            |
24| ------------------------------------------------ | ----------------------------------- |
25| name(必须)                                       | 组件名称                            |
26| attrs(组件必须, 若没有私有属性对应value写空数组) | 组件属性                            |
27| atomic(可选,默认false)                          | 是否不能有子组件                    |
28| parents(可选,默认所有组件可用)                  | 父组件只能是哪些组件                |
29| children(可选,默认所有组件可用)                 | 子组件只能是哪些组件                |
30| single(可选,默认false)                          | 是否只能包含一个子组件              |
31| noDebugLine(可选,默认false)                     | 预览模式下对应组件是否生成debugline |
32
33#### 模块结构:
34
35```mermaid
36classDiagram
37      Component_Map <|-- List
38      Component_Map <|-- TextArea
39      Component_Map <|-- AlphabetIndexer
40      Component_Map <|-- Others
41      class List{
42          name,
43  		  attrs,
44  	      atomic?,
45  	      children?,
46  	      parents?,
47  	      single?,
48  	      noDebugLine?
49      }
50      class TextArea{
51          name,
52  	      attrs,
53  	      atomic?,
54  	      children?,
55  	      parents,
56  	      single?,
57  	      noDebugLine?
58      }
59      class AlphabetIndexer{
60          name,
61  		  attrs,
62  		  atomic?,
63  		  children?,
64  		  parents,
65  	      single?,
66  	      noDebugLine?
67      }
68
69```
70
71#### 文件结构:
72
73```bash
74ace_ets2bundle/compiler
75	├── src
76   		├── component_map
77	├── components
78   		├── Option
79   		├── Line
80		├── Gauge
81   		....
82```
83