官网介绍:
模板(Template)是数据驱动生成的基础,所有的代码(rest api、rpc、model、docker、kube)生成都会依赖模板, 默认情况下,模板生成器会选择内存中的模板进行生成,而对于有模板修改需求的开发者来讲,则需要将模板进行落盘, 从而进行模板修改,在下次代码生成时会加载指定路径下的模板进行生成。
简单来水goctl template可以一键化生成api,rpc,model的配置文件,在之前的demo中都是使用如下命令生成代码:
## 生成api
goctl api new demo
## 生成rpc
goctl rpc new demo
以及其他CLI命令
每需要一个配置文件都需要使用对应的cli是很麻烦的,而且会生成许多不需要的文件,goctl就可以一键化生成所有的配置文件,而无需调用单个的cli生成命令。
对于windows的开发,在安装了goctl的情况下,直接使用goctl template init
会在用户目录生成一个文件.goctl
进入该目录是一个以goctl版本为名称的目录,复制该目录到项目下:
那么常用的api,rpc文件夹就是生成api服务,rpc服务的模板
通过这些定义了服务的模板就可以生成对应的目录和文件,那么如何通过该这些tpl模板生成源文件呢?
给任意goctl命令添加–home 选项指定templete目录
就可以根据tpl模板生成对应的配置文件。
通过goctl api -home [tmmplate_path] -o [output_path]
tmmplate_path是从
.goctl
复制到项目的目录,也就是goctl版本为目录的上一级目录;output_path是输出目录。
如下是初始目录,只有goctl的template目录
使用goctl api -home命令,如下
goctl api -home ./goctltpl -o C:\xwh\go-learn\goctl-tpl\demoapi.api
在设置的输出目录生成了api文件,注意文件一定要带上.api
后缀,不然生成的文件没有后缀。
如下所示生成了api文件
通过goctl template生成了一个api文件,api文件是构建api服务的关键,那么可以看出,goctl template
的作用是用来定制化api服务。
goctl api go --api [dir] --dir [target]
可知生成一个api服务目录,如下
但是其内部的内容是不变的,不了在任何位置使用插件都是一样的,但是通过tpl文件就可以定制化操作,生成自定义的目录结构。
通过go template init
生成goctl template文件后,每个tpl文件修改,如下
tpl文件和生成api目录部分对应,有些实现了融合,对tpl修改之后在使用goctl api go --api [dir] --dir [target] --home [tpl目录]
就不再生成默认的目录结构了,而是定制的目录结构。
例如,不指定定制的goctl template是任然通过默认的生成
如下所示,实现定制化配置:
-
修改部分tpl
-
使用修改后的tpl配置
-
查看是否完成
配置生效,多出了tpl的配置
方法生效,多出了之前的配置
使用go template
实现了定制的服务代码自动生成。