[//]: # (Author: bug) [//]: # (Date: 2020-10-18 15:35:26) ## 特性说明 -------------------- ### 支持的数据类型 * 基础内置类型 - bool,byte,short,fshort,int,fint,long,flong,float,double,string,text,bytes - vector2, vector3,vector4 - datetime * 可空类型 - bool?,byte?,short?,fshort?,int?,fint?,long?,flong?,float?,double? - vector2?,vector3?,vector4? - datetime? * 自定义枚举 enum * 自定义常量 const * 自定义结构 bean - 可以定义所有类型的字段 - 支持无限制的结构继承,对于表达中大型项目的复杂数据(技能,buff,ai 等等) 极其有用。 (比如基类Shape, 子类 Circle,Rectangle ```mermaid graph TD; A-->B; A-->C; B-->D; B-->E; ``` * 支持容器类型 array。 value 可以为内置类型,也可以为自定义类型 * 支持容器类型 list。 value 可以为内置类型,也可以为自定义类型 * 支持容器类型 set。 value 只能为内置类型或者enum类型,不支持 bean 类型 * 支持容器类型 map。 key 只能为内置类型或者enum类型,不支持 bean 类型。 value 可以为内置类型,也可以为自定义类型 ### 多数据源支持 * 支持excel族。 csv 及 xls,xlsx等格式 * 支持从指定excel里的某个单元薄读入。 * 支持json。 每个json文件当作一个记录读入 * 支持lua。 每个lua文件当作一个记录读入 * 支持xml。 每个xml文件当作一个记录读入 * 支持目录。 递归目录下的所有文件,每个文件当作一个记录读入。允许不同类型的文件混合,比如目录下可以同时有json,lua,xml,excel之类的格式。 * 允许指定多个数据源,可以使用以上所有的组合。 * 扩展新的数据源也非常容易 (像支持lua,json,xml数据源只用了200行左右代码) ### 多种数据表模式 * one 格式,即单例表模式 * map 格式,即普通key-value表模式。 任何符合set 的value要求的类型都可以做key * bmap 格式,即双主键模式。 任何符合 set 的value要求的类型都可以作 key1和key ### 分组导出 在大多数项目中,导出给前后端的数据并非完全相同。有些表可能仅仅前端或者后端需要,有些字段也可能仅仅前端或者后端需要。 luban同时支持两种级别的分组: #### 表级别分组 定义方式为在table中定义group属性,如果未定义 group,则默认导出给所有分组,如果定义group,则只导出给指定分组,可以多个,以逗号","分隔。 例如: TbDemoGroup_C表只给客户端使用, TbDemoGroup_S只能服务器使用, TbDemoGroup_E只给editor使用。 定义如下:  #### 字段级别分组 定义方式为给var指定group属性,未指定则默认导出给所有分组。可以为多个,以逗号","分隔。相比于大多数导表工具只支持**表顶级字段**的分组导出,luban支持任意bean字段粒度级别的分组导出。 例如, TbDemoGroup表中 id,x1,x4 字段前后端都需要; x3 只有后端需要;x2 字段只有前端需要。x5是bean类型,它导出给前后端,但它的子字段也可以被分组过滤, x5.y1, x2.y4前后端都会导出,x5.x3只导出给后端,x5.x2只导出给前端。 定义如下:  ### 生成极快 * 大项目几十M配置数据也能1秒导出 * 生成工具使用客户端/服务器架构 * 服务器使用多线程加速生成,数十倍提高生成速度 * 服务器使用缓存直接返回未改动的代码或者数据的生成结果 * 支持增量生成 ### 增强的 excel 格式 * 支持填写任意复杂的数据(比如 常见的 list,bean 这种类型) * 支持 sep 在单个单元格内填写多个数据 * 支持 多行数据。即 对于 list,bean 类型的字段,可以多行填写 * 支持多级标题头,对填写 层次很深的数据时非常有用 * 支持导出标记。比如 是、否、test 等等,用于标记某行数据是否导出 * 支持用 true,false表示 bool 值,语义更清晰。 * 支持枚举 alias 别名,填写枚举类型不再需要写数字了 * 支持可空变量。可以用null表达空。 某些场合下语义更清晰。 * 支持 datetime 数据类型. 时间格式标准为以下几种,最终被转化为utc时间方便程序处理 - yyyy-MM-dd HH:mm:ss - yyyy-MM-dd HH:mm - yyyy-MM-dd HH - yyyy-MM-dd ### 代码编辑器支持 * 根据配置表定义生成相应的json文件的 load 及 save 代码(c#或者c++),方便编辑器加载和导出。每个记录对应一个json文件。 * 支持 unity 下用c# 开发编辑器 * 支持 unreal 下用c++ 开发的编辑器 ### 多数据源 支持表数据来自excel文件;来自excel某个单元薄;来自json、xml、yaml文件;来自目录下所有文件。以及以上几种的组合。 #### 来自某个excel文件 ```xml