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