定制小程序开发【Go电商实战02】如何借助工具快速生成代码?初学者容易踩的坑有哪些?

上期回顾

定制小程序开发上一篇内容分享了
定制小程序开发这篇内容继续分享重点内容:定制小程序开发如何通过编写logic生成service?

本期重点

使用 gen service 定制小程序开发自动生成代码

注意:定制小程序开发该功能特性从goframe v2.1定制小程序开发版本开始提供。

基本介绍

设计背景

定制小程序开发在业务项目实践中,定制小程序开发业务逻辑封装往往是最复杂的部分,同时,业务模块之间的依赖十分复杂、边界模糊,无法采用Golang包管理的形式。

如何有效管理项目中的业务逻辑封装部分呢?对于每个采用Golang开发的项目都是必定会遇到的难题。

设计目标

增加logic分类目录,将所有业务逻辑代码迁移到logic分类目录下,采用包管理形式来管理业务模块。

业务模块之间的依赖通过接口化解耦,将原有的service分类调整为接口目录。这样每个业务模块将会各自维护、更加灵活。

可以按照一定的项目规范,从logic业务逻辑代码生成service接口定义代码。

同时,也允许人工维护这部分service接口。

命令使用

gf gen service命令通过分析给定的logic业务逻辑模块目录下的代码,自动生成service目录接口代码。

需要注意:

  1. 由于该命令是根据业务模块生成service接口,因此只会解析二级目录下的go代码文件,并不会无限递归分析代码文件。以logic目录为例,该命令只会解析logic/xxx/*.go文件。因此,需要logic层代码结构满足一定规范。
  2. 不同业务模块中定义的结构体名称在生成的service接口名称时可能会重复覆盖,因此需要在设计业务模块时保证名称不能冲突。
    手动模式
手动执行(不建议)

如果是手动执行命令行,直接在项目根目录下执行 gf gen service 即可。

$ gf gen service -hUSAGE    gf gen service [OPTION]OPTION    -s, --srcFolder         source folder path to be parsed. default: internal/logic    -d, --dstFolder         destination folder path storing automatically generated go files. default: internal/service    -f, --dstFileNameCase   destination file name storing automatically generated go files, cases are as follows:                            | Case            | Example            |                            |---------------- |--------------------|                            | Lower           | anykindofstring    |                            | Camel           | AnyKindOfString    |                            | CamelLower      | anyKindOfString    |                            | Snake           | any_kind_of_string | default                            | SnakeScreaming  | ANY_KIND_OF_STRING |                            | SnakeFirstUpper | rgb_code_md5       |                            | Kebab           | any-kind-of-string |                            | KebabScreaming  | ANY-KIND-OF-STRING |    -w, --watchFile         used in file watcher, it re-generates all service go files only if given file is under                            srcFolder    -a, --stPattern         regular expression matching struct name for generating service. default: ^s([A-Z]\\w+)$    -p, --packages          produce go files only for given source packages    -i, --importPrefix      custom import prefix to calculate import path for generated importing go file of logic    -l, --clear             delete all generated go files that are not used any further    -h, --help              more information about this commandEXAMPLE    gf gen service    gf gen service -f Snake
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

参数说明:

自动模式(强烈建议)

如果你是使用的GolandIDE,那么可以使用官方提供的配置文件:watchers.xml 自动监听代码文件修改时自动生成接口文件。使用方式,如下图:

自动模式配置教程

1. 引入官方提供的配置文件

建议在使用Goland IDE时,使用官方提供的配置文件:watchers.xml

watchers.xml下载地址:https://goframe.org/pages/viewpage.action?pageId=49770772&preview=/49770772/49770777/watchers.xml

2. 编写业务逻辑代码

3. 生成接口及服务注册文件

如果你已经按照步骤1做好了watchers.xml的配置,那么这一步可以忽略。因为在我们编写代码的时候,service便同时生成了接口定义文件。

如果没有配置,我们每次编写logic业务模块后,都需要手动执行一下 gf gen service 命令。

所以,我强烈建议你按照教程配置watchers.xml

不管用哪种方式,生成的service目录,效果如下:

注意:下面就是我说的初学者容易踩的坑

4. 注意服务的实现注入部分(仅一次)

只有在生成接口文件后,才能在每个业务模块中加上接口的具体实现注入。该方法每个业务模块加一次就可以。

比如这种:

5. 在启动文件中引用接口实现注册(仅一次)

注意:gf gen service命令除了生成接口文件之外,还生成了一个接口实现注册文件。

这个文件用于程序启动时,将接口的具体实现执行注册。

该文件的引入需要在main包的最顶部引入,需要注意import的顺序,放到最顶部,后面加一个空行。如果同时存在packed包的引入,那么放到packed包后面。像这样:

6. 搞定

完成上面的5步操作,我们就搞定了最复杂的通过编写logic层业务逻辑,自动生成service层代码的部分

跑通业务功能

上面介绍了 gf gen service 的使用,是本期的重点。

另外一个重点就是,我们本期的视频内容带大家跑通了一个业务功能
完成了管理后台轮播图的接口,欢迎大家收藏文章,找个时间动手实践视频内容:

一起学习

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发