这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
开始
最近上手了一些go的web小项目,对于项目的结构有一些认识,在这里我讲一种我觉得清晰通用的后端项目架构.这是一个典型的前后端分离的项目.后端向前端发送的是json格式的数据,由前端框架(比如vue)接手之后,再渲染出网页而页面效果. 整体上,它是这样的:
- 前端源文件
- 后端源文件
- main.go
- go.mod
- go.sum
- conf.yaml
- static
- log
- conf
- db
- cache
- utils
- entity
- middleware
- service
- api
- router
注:有后缀的是文件,无后缀的是目录.
详解
main.go是项目的入口,主要功能是启动服务和关闭服务以及输出必要的日志信息.conf.yaml是项目中所有的配置信息的文件,比如mysql,cache,server,log等配置信息.详细介绍一下后端文件中的文件和目录:
conf
实例化conf.yaml的内容,即把yaml反序列化绑定在全局的结构体中,供代码调用.
static
静态文件存储目录,储存网页展示的图片/视频等资源.
log
日志文件存储目录,可以按时间或者级别细分.
db
连接数据库的代码
cache
内存式缓存的代码
utils
各种常用的工具函数
entity
数据库中每张表所对应的结构体原型定义,因为项目常常使用go中的orm工具,也就是gorm.
middleware
全局中间件和常用中间件,例如日志中间件/jwt鉴权中间件(也就是检查登陆的)等等.
service
主要包含和数据库直接交互的代码,类似于dao.在这里会"继承"entity中的结构体type xxx entity.xxx,然后再加入对结构体的增删改查方法.
api
编写路由接口绑定的函数(handler函数),会使用到service和utils的已经封装的一些工具函数.
router
初始化路由,注册各个接口路由的地址,配置路由的静态地址等.
-