### 什么是datacom `datacom`,全称是`data components`,数据驱动的组件。 这种组件也是vue组件,是一种子类,是基础组件的再封装。 相比于普通的vue组件,`datacom`组件的特点是,给它绑定一个data,data中包含**一组**候选数据,即可自动渲染出结果。 比如 [uni-data-checkbox](https://ext.dcloud.net.cn/plugin?id=3456) 组件,给它绑定一个data,即可直接生成一组选择框。 ```html ``` 而使用基础组件的写法,代码量则要增加很多,如下: ```html ``` 图例: ![](https://img-cdn-aliyun.dcloud.net.cn/stream/plugin_screens/f5c64490-2994-11eb-a554-03adfa49bb37_0.jpg) ### 什么是datacom组件规范 显然,datacom组件不是只有一个``,radio、check、select、picker、segement、tree...还有很多组件都可以成为datacom组件,变成类似``。 那么“datacom组件规范”,就定义了什么是`datacom组件`,以及它们的互联互通标准。 所有开发者,都可以在 [DCloud插件市场](https://ext.dcloud.net.cn) 提交符合`datacom组件规范`的组件。在插件市场组件分类下可以找到所有已上传的datacom组件,[详见](https://ext.dcloud.net.cn/search?&q=DataCom&orderBy=Relevance) 详细的“datacom组件规范”见后文。 ### datacom对于开发者的好处 datacom组件,对服务器数据规范、前端组件的数据输入和输出规范,做了定义。它提升了产业的标准化程度、细化了分工,提升了效率。 且不论产业影响,对开发者个人而言,显而易见的好处也很多: - 更少的代码量。从前述的传统写法对比可见,使用datacom的前端页面,代码量可减少一半以上。 - 设计更加清晰。服务器端给符合规范的数据,然后接受选择的结果数据。中间的ui交互无需关心。 - 结合 [uni-forms](https://ext.dcloud.net.cn/plugin?id=2773) 组件,自动实现表单校验。 - 搭配 uniCloud 的[unicloud-db组件](https://uniapp.dcloud.io/uniCloud/clientdb),数据库查询结果直接绑定给`datacom组件`,服务器代码直接就不用写了 - 搭配 uniCloud 的[schema2code页面生成系统](https://uniapp.dcloud.net.cn/uniCloud/schema?id=autocode),数据库定义好schema,前端页面就不用写了,自动生成 - 互操作性。可以轻易的切换更好的组件 举个例子,假使我们想实现一个城市选择的业务。 1. 首先在uniCloud的数据库里,建一个城市表。 2. 然后前端写一个组件`` 3. 最后用`unicloud-db组件`把数据库的城市表数据拉下来,绑定给`` 4. 在传统开发里,这个功能要写很长的代码,现在变得特别轻松。 5. 额外的,开发者将可以在插件市场找到多个城市选择组件,它们都符合`datacom组件规范`,可能有的是全屏选择、有的是底部半屏选择,有的顶部有搜索框、有的右侧有索引字母....不管什么样的城市选择组件,你都可以随便的换,反正它们都符合一个数据规范。 ### datacom组件规范 1. 命名以 -data- 为中间分隔符,前面为组件库名称,后面是组件功能表达 2. 组件可以通过属性赋值,绑定一个 data 数据。可以是本地的localdata,也可以直接指定uniCloud云数据库的查询结果。详见下文的《数据绑定规范》 3. data数据是一组候选json数据。数据可以是平铺的数组,也可以是嵌套的树形结构。详见下文的《数据结构规范》 4. 符合 `` 组件的表单校验规范 #### 数据结构规范 datacom组件接受的数据结构,包含了“数组”和“树”两种数据结构规范。 1. 数组类型数据: - 规范: data数据是一组可循环的数据集合。数组中每条数据如下基本key: |key |描述 | |-- |-- | |value |值。必填 | |text |显示文字。必填 | |selected |是否默认选中。默认值false | |disable |是否禁用。默认值false | |group |分组标记 | 如果熟悉html的`