风格介绍

三层架构,全局变量型

对应传统的mvc架构,一般定义一个全局变量来操作数据库
代表beego、gin-vue-admin gf等

gin-vue-admin

image.png
不同于java的依赖注入,api,service,routine中每个包都有一个enter.go文件将包中的实例导出

  1. enter.go
  2. ├─autocode
  3. auto_code_example.go
  4. enter.go
  5. ├─example
  6. enter.go
  7. exa_breakpoint_continue.go
  8. exa_customer.go
  9. exa_excel_parse.go
  10. exa_file_upload_download.go
  11. └─system
  12. enter.go
  13. jwt_black_list.go
  14. sys_api.go
  15. sys_authority.go
  16. sys_autocode_history.go
  17. sys_auto_code.go
  18. sys_auto_code_interface.go
  19. sys_auto_code_mysql.go
  20. sys_auto_code_pgsql.go
  21. sys_base_menu.go
  22. sys_casbin.go
  23. sys_dictionary.go
  24. sys_dictionary_detail.go
  25. sys_initdb.go
  26. sys_initdb_mysql.go
  27. sys_initdb_pgsql.go
  28. sys_menu.go
  29. sys_operation_record.go
  30. sys_system.go
  31. sys_user.go
  1. type ServiceGroup struct {
  2. SystemServiceGroup system.ServiceGroup
  3. ExampleServiceGroup example.ServiceGroup
  4. AutoCodeServiceGroup autocode.ServiceGroup
  5. }
  6. var ServiceGroupApp = new(ServiceGroup)

gva特点
1、核心两层,api和service,没有dao 使用一个文件将所有的包要导入的实例化对象集中导出
2、全局变量,使用全局db,数据库客户端来操作

gf

image.png

1、 controller service dao三层设计,dao层由框架生成。
2、controller service 文件导出本身实例
3、db实例由框架本身维护。

  1. service
  2. type (
  3. // sUser is service struct of module User.
  4. sUser struct{}
  5. )
  6. var (
  7. // insUser is the instance of service User.
  8. insUser = sUser{}
  9. )
  1. controller
  2. var User = cUser{}
  3. type cUser struct{}
  4. func (c *cUser) SignUp(ctx context.Context, req *apiv1.UserSignUpReq) (res *apiv1.UserSignUpRes, err error) {
  5. err = service.User().Create(ctx, model.UserCreateInput{
  6. Passport: req.Passport,
  7. Password: req.Password,
  8. Nickname: req.Nickname,
  9. })
  10. return
  11. }
  12. func (c *cUser) SignIn(ctx context.Context, req *apiv1.UserSignInReq) (res *apiv1.UserSignInRes, err error) {
  13. err = service.User().SignIn(ctx, model.UserSignInInput{
  14. Passport: req.Passport,
  15. Password: req.Password,
  16. })
  17. return
  18. }

https://goframe.org/pages/viewpage.action?pageId=3672526