之前一直用 controller, model, service 这套目录在写项目(老项目是基于beego开发的), 做复杂后越发感觉代码都写在一坨了, 划分得不够清晰. 还经常出现相互引用的情况, 最近整理了一套新的目录结构, 大家给点建议?
- main.go
- cmd // 放一些shell脚本
- start.sh
- kill.sh
- build.sh
- apitest // 接口测试用例
- api_test.go
- api_test.http
- docs //
- scripts // 数据操作脚本, 包括数据修复及数据查询导出等
- fix_xxx.py
- server // http 及 rpc 初始化, 中间件, 路由等
- router.go
- mw
- jwt
- logger
- otel
- ratelimit
- cors
- biz // 业务代码, 包括api或rpc handler, 业务数据操作, 业务逻辑(service)
- handler
- dal // 数据访问层, 数据接口实现
- model
- wire // 用于解决包相互引用(定义interface)
- repo // 定义数据层对象及数据接口
- service // 业务逻辑
- pkg // 一些全局依赖包
- config
- constant
- utils
- xxx-common // 通用共享包
- pkg
- utils
- errno
- logger
- rpc // rpc定义 及相关生成代码
- idl
- xxx_gen
- infra // 基础组件封装及初始化
- kafka
- nacos
- mysql
- postgres
- es
- redis
- clickhouse
- cloud // 其他云接口调用
- aliyun
- tencentcloud
- xxxcloud