1 Star 2 Fork 5

北京小程科技有限公司 / 常量和模型生成工具

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

unified-structure

这是一个用Go编写的,用于开发过程中,生成多端统一的常量和模型代码的工具。

采用了Json作为通用的格式,然后通过本工具,转换成对应不同语言的文件,这样每次修改Json文件之后,只要重新生成一下,就可以有全新同步的后端和前端代码了。

目前支持如下目标语言:

  • Go
  • TypeScript
  • JavaScript:不直接支持,而是通过生成TypeScript,然后运行tsc进行转换。

测试样例

example/origin中,有两个样例目录,constant是常量源文件目录,model是模型源文件目录。

运行make test后,生成的代码在dist中,分别生成Go和TypeScript代码。

具体样例的构建过程,参见Makefile

使用方法

安装命令:

go get -u gitee.com/xiaochengtech/unified-structure

# 调用方式
`go env GOPATH`/bin/unified-structure

可执行文件位置为$GOPATH/bin/unified-structure,参数如下:

名称 必填 描述
-src [SRC_DIR] 源路径,路径下是一些Json文件,和其他类型的文件
-dest [DEST_DIR] 目标路径,生成目标语言的对应文件,以及从源路径拷贝了部分支持类型的文件
-language [LANGUAGE] 目标语言,目前支持gots(TypeScript)

源路径下,必须包含一个index.json,用于声明一些Package级别的信息,其他Json文件各自是一个小的模块,如果有非Json文件,则根据已有语言选择性拷贝到目标路径中。

index.json格式

完整格式如下:

{
    "mode": "(必填) 目录模式,常量(constant)还是模型(model)",
    "ext-go": {
        "copy-ext": [],
        "package-name": "go的包名"
    },
    "ext-ts": {
        "copy-ext": [],
    }
}

其中ext-xxx是不同语言的额外配置,可以选择性填写。copy-ext为可以拷贝的文件的后缀名列表。

目前只支持整个目录都是常量,或者都是模型的方式。不支持混合方式。

普通Json文件格式

不管常量还是模型,格式都是如下:

{
    "name": "(必填) 模块名称,Go中必须首字母大写",
    "comment": "(选填) 文件级注释",
    "language": "(必填) 支持导出的语言列表",
    "vartype": "统一的变量类型,IOTA为必填,其他为选填,优先级不如字段的type",
    "iota": {
        "enable": "是否启用,默认为false,整个iota",
        "offset": "偏移量"
    },
    "list": [],
    "ext-go": {
        "gorm-table-name": "GORM数据库模式时的表名",
        "import-pkgs": "导入的包名列表,字符串数组",
        "enable-set": "是否导出获取label标签的函数"
    },
    "ext-ts": {
        "enable-set": "是否导出label标签的集合"
    }
}

这里iota整个对象都是选填,只在常量模式生效,表示特定的IOTA自增数字模式,参见Go的语法。

list是常量或字段的列表,数组内部元素参见下面字段格式。

字段格式

常量或者模型的字段格式也是统一的,如下所示:

{
    "name": "(必填) 变量名",
    "type": "(选填) 变量类型",
    "json": "(必填) Json字段名",
    "label": "(选填) 对应的展示内容",
    "comment": "(选填) 注释",
    "value": "(常量模式) 变量值",
    "refer": {
        "name": "引用对象的名称",
        "file": "引用对象的文件名"
    },
    "ext-go": {
        "gorm": "GORM特定属性"
    },
    "ext-ts": {
    }
}

其中refer是扩展类型(extend)字段的信息。

字段类型的支持列表,请参见src/common/vartype.go

MIT License Copyright (c) 2020 XiaochengTech Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

用Go编写的,用于开发过程中,生成多端统一的常量和模型代码,目前支持Go、TypeScript、JavaScript语言。 展开 收起
Go 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/xiaochengtech/unified-structure.git
git@gitee.com:xiaochengtech/unified-structure.git
xiaochengtech
unified-structure
常量和模型生成工具
master

搜索帮助

14c37bed 8189591 565d56ea 8189591