思考并回答以下问题:
基本介绍
Gin-vue-admin是一个基于vue和gin开发的全栈前后端分离的开发基础平台,集成jwt鉴权,动态路由,动态菜单,casbin鉴权,表单生成器,代码生成器,分页封装,多点登录拦截,资源权限,上传下载等功能。
测试用户名:admin
测试密码:123456
使用说明
1 | - node版本 > v16.8.3 |
server项目
使用Goland
等编辑工具,打开server目录,不可以打开gin-vue-admin根目录
1 | 克隆项目 |
web项目
1 | 进入web文件夹 |
swagger自动化API文档
安装swagger
(1)可以访问外国网站
1 | go get -u github.com/swaggo/swag/cmd/swag |
(2)无法访问外国网站
由于国内没法安装go.org/x包下面的东西,推荐使用goproxy.cn或者goproxy.io
1 | 如果您使用的 Go 版本是 1.13 - 1.15 需要手动设置GO111MODULE=on, 开启方式如下命令, 如果你的 Go 版本 是 1.16 ~ 最新版 可以忽略以下步骤一 |
生成API文档
1 | cd server |
执行上面的命令后,server目录下会出现docs文件夹里的
docs.go
,swagger.json
,swagger.yaml
三个文件更新,启动go服务之后, 在浏览器输入http://localhost:8888/swagger/index.html即可查看swagger文档
VSCode工作区
开发
使用VSCode
打开根目录下的工作区文件gin-vue-admin.code-workspace
,在边栏可以看到三个虚拟目录:backend
、frontend
、root
。
运行/调试
在运行和调试中也可以看到三个task:Backend
、Frontend
、Both (Backend & Frontend)
。运行Both (Backend & Frontend)
可以同时启动前后端项目。
settings
在工作区配置文件中有go.toolsEnvVars
字段,是用于VSCode
自身的go工具环境变量。此外在多go版本的系统中,可以通过gopath
、go.goroot
指定运行版本。
1 | "go.gopath": null, |
技术选型
- 前端:用基于Vue的Element构建基础页面。
- 后端:用Gin快速搭建基础Restful风格API,Gin是一个go语言编写的Web框架。
- 数据库:采用
MySql
> (5.7)版本数据库引擎InnoDB,使用gorm实现对数据库的基本操作。 - 缓存:使用
Redis
实现记录当前活跃用户的jwt
令牌并实现多点登录限制。 - API文档:使用
Swagger
构建自动化文档。 - 配置文件:使用fsnotify和viper 实现
yaml
格式的配置文件。 - 日志:使用zap 实现日志记录。
server项目结构
1 | ├── server |
文件夹 | 说明 | 描述 |
---|---|---|
api |
api层 | api层 |
--v1 |
v1版本接口 | v1版本接口 |
config |
配置包 | config.yaml对应的配置结构体 |
core |
核心文件 | 核心组件(zap, viper, server)的初始化 |
docs |
swagger文档目录 | swagger文档目录 |
global |
全局对象 | 全局对象 |
initialize |
初始化 | router, redis, gorm, validator, timer的初始化 |
--internal |
初始化内部函数 | gorm的logger自定义,在此文件夹的函数只能由initialize 层进行调用 |
middleware |
中间件层 | 用于存放gin 中间件代码 |
model |
模型层 | 模型对应数据表 |
--request |
入参结构体 | 接收前端发送到后端的数据 |
--response |
出参结构体 | 返回给前端的数据结构体 |
packfile |
静态文件打包 | 静态文件打包 |
resource |
静态资源文件夹 | 负责存放静态文件 |
--excel |
excel导入导出默认路径 | excel导入导出默认路径 |
--page |
表单生成器 | 表单生成器打包后的dist |
--template |
模板 | 模板文件夹,存放的是代码生成器的模板 |
router |
路由层 | 路由层 |
service |
service层 | 存放业务逻辑问题 |
source |
source层 | 存放初始化数据的函数 |
utils |
工具包 | 工具函数封装 |
--timer |
timer | 定时器接口封装 |
--upload |
oss | oss接口封装 |
main.go
1 | package main |
Dockerfile
1 | FROM golang:alpine as builder |
config.yaml
1 | # github.com/flipped-aurora/gin-vue-admin/server Global Configuration |