Skip to content

Latest commit

 

History

History

empty

一个空Demo项目

可以作为目录结构参考

目录结构:

.  
├── README.md  
├── go.mod  
├── go.sum  
├── docker-compose.yaml  # compose文件,通过在当前目录执行 `docker-compose up` 可以运行代码
├── Dockerfile           # 用于镜像编译 
├── Makefile             # Makefile,定义了 run、build、test 等命令   
├── bin  
│   └── server  # 项目编译后的二进制文件
├── cmd  
│   └── server  
│       └── main.go  
├── config  # 配置目录  
│   ├── default.properties  # 默认配置  
│   ├── local.properties    # 本地开发配置,不设置环境变量,会使用该配置
│   ├── dev.properties      # 开发环境配置,可以用于部署到开发环境的服务器上
│   └── prod.properties     # 生产环境配置,用于部署到生产环境使用
├── internal  
│   ├── master.go           # 主 Preist 函数,用于加载框架基础依赖(本项目只依赖了 goner/gin ) 和 内部 Priest 函数
│   ├── priest.go           # 运行 make gone 生成的文件,包括一个Priest函数,用于安葬(加载)所有内部的Goner组件
│   ├── interface           # 接口包,可以包含 domain 、event、 service 等子包 
│   │   ├── domain          # 用于定义业务对象(实体对象、值对象、聚合根等)
│   │   │   ├── demo.go  
│   │   │   └── user.go  
│   │   └── service          # 内部接口包,用于管理内部接口定义
│   │       └── i_demo.go    # IDemo 接口
│   ├── middleware                 # 中间件包,用于定义中间件
│   │   ├── authorize.go  
│   │   └── pub.go  
│   ├── module                     # 模块
│   │   └── demo             # demo模块,一般情况下,一个模块与service包下的一个文件对应,实现其中定义的接口
│   │       ├── demo_svc.go  # 实现 IDemo 接口
│   │       └── error.go     # 模块内的错误编码定义
│   ├── controller                 # controller目录,用于定义http服务接口 
│   │   └── demo_ctr.go      # demo controller
│   ├── pkg  
│   │   └── utils  
│   │       └── error.go     # 定义全局错误编码
│   └── router  
│       ├── auth_router.go         # 定义需要鉴权的路由
│       └── pub_router.go          # 定义不需要鉴权的路由
└── tests                                # 全局测试目录
    └── api                              # 接口测试
        └── demo.http                    # demo接口测试

命令

假设已经安装了Golang环境
下列命令使用Makefile定义,系统中需要安装Make(参考安装make)

  • make gone
    用于生成Priest代码,在IED中运行前⚠️必须先执行该命令,否则代码不完整无法运行

  • make run
    运行代码,已经集成了make gone

  • make build
    编译项目

  • make build-docker
    编译docker镜像,假设已经安装 dockerdocker-compose

  • make run-in-docker
    在docker中运行,假设已经安装 dockerdocker-compose

模板

该项目可以作为一个模板项目,包名为demo-structure,可以批量替换修改调整为想要的包名,用于业务开发

your_package_name=YOUR_NEW_PACKAGE_NAME
sed -i '' "s/demo-structure/$your_package_name/g" `grep demo-structure -rl --exclude="./bin/*" --exclude="./README.md"`
go mod tidy