官网介绍:
模板(Template)是数据驱动生成的基础。所有代码(rest api、rpc、model、docker、kube)生成都将依赖于模板。默认情况下,模板生成器会选择内存中的模板进行生成,对于需要修改模板的开发者来说,需要下载模板来修改模板。下次生成代码时会加载指定路径下的模板进行生成。
简单的goctl模板可以一键生成api、rpc、模型配置文件。在之前的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的模板目录
使用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模板仍然默认生成
如下图,自定义配置:
-
修改部分tpl
-
使用修改后的tpl配置
-
检查是否完成
配置生效,多出了tpl的配置
方法生效,多出了之前的配置
使用go template
实现了定制的服务代码自动生成。