一种清晰的go项目构成 | 青训营笔记

107 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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

初始化路由,注册各个接口路由的地址,配置路由的静态地址等.

-