gin框架实践[Go-Gin_Api]2.0 工具篇续集
Hello,我是Rocket
- 新增支持生成command、service、controller、view,源码就在项目里
- github传送门
- 喜欢的铁子们给点个star
- 没有看过上一篇文章的老铁们从这进传送门
- tpl模板在cmd/tpl下
1、make:command 生成命令
核心方法:util.CommandCreate
1、判断文件是否存在
2、生成文件
3、通过text/template 写入文件内容
func CommandCreate(use, fileName, cmdName, cmdParent string) error {
cmdFilePath := fmt.Sprintf("%s.go", fileName)
cmdFile, err := tool.CreateFile(cmdFilePath)
if err != nil {
return err
}
defer cmdFile.Close()
c := commandStruct{
Use: use,
CmdName: cmdName,
CmdParent: cmdParent,
}
commandTemplate := template.Must(template.New("sub").Parse(tpl.AddCommandTemplate()))
err = commandTemplate.Execute(cmdFile, c)
if err != nil {
return err
}
return nil
}
2、make:service 生成服务层
代码在cmd/make-service.go
核心代码:util.ServiceCreate
func ServiceCreate(model, fileName, path string) (string, error) {
...省略
//简析model
s := serviceStruct{
Package: Package, //tpl里{{.Package}}
ModelImport: ModelImport,
ModelName: ModelName,
ModelStruct: ModelStruct, //类似models.SysMenu
}
serviceTemplate := template.Must(template.New("ser").Parse(tpl.ServiceTemplate()))
err = serviceTemplate.Execute(File, s)
if err != nil {
return path fileName, err
}
return path fileName, nil
}
3、make:controller 生成控制器层
代码在cmd/make-controller.go
核心代码:util.ControllerCreate
func ControllerCreate(path, name, model, service string) (string, error) {
...省略
s := controllerStruct{
Package: Package,
ControllerName: ControllerName,
ViewName: ViewName,
Name: name,
ModelImport: ModelImport,
ModelStruct: ModelStruct,
ServiceImport: serviceImport,
ServicePackage: servicePackage,
ServiceName: serviceName,
}
controllerTemplate :=template.Must(template.New("ser").Parse(tpl.ControllerTemplate()))
err = controllerTemplate.Execute(File, s)
if err != nil {
return fileName, err
}
return fileName, nil
}
4、make:view 生成视图
代码在cmd/make-view.go
核心代码:
func ViewCreate(path, desc string) error {
...省略
v := viewStruct{
Default: path,
Desc: desc,
}
controllerTemplate := template.Must(template.New("view").Delims("<!--{", "}-->").Parse(tpl.ViewTemplate()))
err = controllerTemplate.Execute(File, v)
if err != nil {
return err
}
return nil
}
5、后续计划
下一篇文章准备给大家整合cmd命令,10分钟快速实现一个功能的增删改查(包括页面、权限、按钮、弹窗等等)
6. 系列文章
- 连载一 golang环境搭建
- 连载二 安装Gin
- 连载三 定义目录结构
- 连载四 搭建案例API1
- 连载五 搭建案例API2
- 连载六 接入swagger接口文档
- 连载七 日志组件
- 连载八 优雅重启和停止
- 连载番外 Makefile构建
- 连载番外 Cron定时任务
- 连载番外 打造命令行工具
- 连载番外 3天打造专属Cache(First day)
- 连载番外 3天打造专属Cache(Second day)
- 连载番外 3天打造专属Cache(Third day)
- gin框架实践[Go-Gin_Api]2.0
- gin框架实践[Go-Gin_Api]2.0 工具篇
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhbebjch
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01