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