前言
本项目我们将会完成一个Go
项目开发框架,该项目不会包含具体的CRUD
业务代码,而是从头搭建一个工作中实用的开发框架。让开发者能够熟悉整个项目的搭建流程,能够独立完成项目从0到1
的搭建,而且后续业务项目都可以复用该框架快速进入需求开发。
一、项目目录设计
一个Web
应用基本都会包含以下的基础模块:
- 项目配置,一般都是
yaml
文件,是全项目启动时就需要加载的相关信息 Web
模块(HTTP
模块、RPC
模块、Task
定时任务模块)- 数据库(
MySQL
、Redis
) - 缓存模块(
Cache
、Redis
),Cache
指本地缓存,通常用于定时加载一些元信息配置。 - 日志模块(请求日志,应用日志),请求日志为调用链路日志,一般是内嵌设置的,用户不用手动记录,而应用日志则指的是开发人员在业务开发中主动调用
logs.CtxInfo,logs.CtxError
等记录的日志。 - 应用指标(
metrics、 PProf
),用于打点和监控 - 其它(链路追踪,服务注册发现)
该项目会完成上述1-5
部分,完成后,目录结构大体如下:
为了能够更清楚的看清层级,目录树如下
D:\GOCODE\WEB-TPL-MASTER
├─.idea
├─app # 当前web应用
│ ├─core # 项目基础核心,包含配置文件对应的结构体,MySQL,Redis,log等连接初始化与管理
│ │ ├─config
│ │ ├─db
│ │ ├─log
│ │ ├─redis
│ │ └─valid
│ ├─http # http服务,包含路由,中间件,模型管理等
│ │ ├─controllers
│ │ │ ├─home
│ │ │ │ └─params
│ │ │ ├─qrcode
│ │ │ └─user
│ │ ├─middleware
│ │ │ └─logger
│ │ ├─models
│ │ └─routes
│ ├─svc # service逻辑层,处理业务逻辑,下面一个前端页面对应一个文件夹
│ │ └─home
│ └─utils # 工具包 运行环境(IP,机房等)获取,请求与响应的封装
│ ├─env
│ ├─r
│ └─rsp
└─config # yaml配置文件管理
└─env