Go-MVC
项目地址:https://github.com/jian1098/go-mvc
项目说明
go语言gin框架搭建的MVC模式(参考PHP语言Laravel和ThinkPHP框架结构)web开发框架项目,集成了数据库gorm、类型转换cast等常用包,以及一些代码示例;控制器层和路由层做了仿继承处理,方便添加统一的属性和方法,模型、模板、控制器、路由、常量、验证器、服务、全局日志、全局DB等都做了分离处理,分配到各个模块
运行环境
本项目测试环境为go 1.22.0
,理论上 go version >= 1.20
即可
目录结构
|-- app #开发主目录
| |-- admin #后台模块
| | `-- controllers #后台控制器
| | |-- adminController.go
| | |-- baseController.go
| | `-- homeController.go
| |-- api #api模块
| | `-- controllers #api控制器
| | |-- baseController.go
| | `-- indexController.go
| | `-- requests #api请求参数结构体
| | `-- responses #api响应结构体
| |-- utils #公共模块
| | |-- db.go
| | `-- zapLogger.go
| |-- constants #常量目录
| | `-- Response.go
| |-- middlewares #中间件目录
| | `-- Cors.go
| |-- services #服务层目录
| | `-- UserServices.go
| `-- models #模型结构体目录
| `-- User.go
|-- .env #环境配置
|-- go.mod
|-- go.sum
|-- main.go #main.go
|-- routers #路由模块
| |-- adminRouter.go
| |-- apiRouter.go
| `-- baseRouter.go
|-- static #静态文件
| `-- js
| `-- jquery.min.js
|-- templates #模板文件
| `-- admin
| |-- home
| | `-- index.html
| `-- index
| `-- index.html
|-- runtimes
| `-- log #日志文件目录
|-- uploads #上传文件目录
如何使用
下载源码
bash
git clone https://github.com/jian1098/go-mvc.git
创建配置文件,并修改为你的配置
bash
cd go-mvc
cp .env.example .env
vim .env
开启go mod
bash
go env -w GO111MODULE=on
设置代理
bash
go env -w GOPROXY="https://goproxy.cn"
安装依赖
bash
go mod vendor
运行http服务
bash
go run main.go
添加路由
在routers
目录下对应模块增加路由
访问API接口
请求路由以/api/
开头, 例如:127.0.0.1:8080/api/index/demo
访问后台页面
请求路由以/admin/
开头, 例如:127.0.0.1:8080/admin/home/index
第三方包
包名 | 用途说明 |
---|---|
github.com/gin-gonic/gin | gin框架 |
github.com/joho/godotenv | 加载.env配置 |
go.uber.org/zap | zap日志 |
github.com/spf13/cast | 变量类型转换 |
github.com/jinzhu/gorm | gorm数据库包 |
github.com/go-sql-driver/mysql | mysql驱动,配合gorm使用 |
github.com/gookit/validate | 验证器,支持验证场景和标签 |
github.com/dgrijalva/jwt-go | jwt |