1 Star 0 Fork 613

WEB海风 / GinSkeleton

forked from 张奇峰 / GinSkeleton 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

这是什么?

1.这是一个基于go语言gin框架的web项目骨架,专注于前后端分离的业务场景,其目的主要在于将web项目主线逻辑梳理清晰,最基础的东西封装完善,开发者更多关注属于自己的的业务即可。
2.本项目骨架封装了以tb_users表为核心的全部功能(主要包括用户相关的接口参数验证器、注册、登录获取token、刷新token、CURD以及token鉴权等),开发者拉取本项目骨架,在此基础上就可以快速开发自己的项目。
3.本项目骨架请使用 master 分支版本即可, 该分支是最新稳定分支 .
4.本项目骨架从V1.4.00开始,要求go语言版本 >=1.15,才能稳定地使用gorm v2读写分离方案,go1.15下载地址:https://studygolang.com/dl

问题反馈

1.提交问题请在项目顶栏的issue直接添加问题,基本上都是每天处理当天上报的问题。
2.本项目优先关注 https://gitee.com/daitougege/GinSkeleton 仓库的所有问题, github 太卡严重影响效率。
3.从 v1.2.26 版本之后开启qq群答疑, QQ群:273078549 欢迎喜欢gin框架go开发者一期参与讨论.

快速上手

1.安装的go语言版本最好>=1.15,只为更好的支持 go module 包管理.
2.配置go包的代理,参见https://goproxy.cn,有详细设置教程.
3.使用 goland(>=2019.3版本) 打开本项目,找到database/db_demo_mysql.sql导入数据库,自行配置账号、密码、端口等。
4.双击cmd/(web|api|cli)/main.go,进入代码界面,鼠标右键run运行本项目,首次会自动下载依赖, 片刻后即可启动.
业务主线图

项目目录结构介绍

核心结构

交叉编译(windows直接编译出linux可执行文件)

  // goland 终端底栏打开`terminal`, 依次执行以下命令,设置编译钱的参数  
  set GOARCH=amd64
  set GOOS=linux
  set CGO_ENABLED=0   // window编译设置Cgo模块关闭,因为windows上做cgo开发太麻烦,如果引用了Cgo库库,那么请在linux环境开发、编译  
  
  // 编译出最终可执行文件,进入根目录(GinSkeleton所在目录,也就是 go.mod 所在的目录)
  // -o 指定最终编译出的文件名, cmd/(web|api|cli)/main.go 表示编译的入口文件,web|api|cli 三个目录选择其一即可  
  go build -o demo_goskeleton cmd/(web|api|cli)/main.go
  

项目骨架主线、核心逻辑

1.这部分主要介绍了项目初始化流程路由表单参数验证器控制器modelservice 以及 websocket 为核心的主线逻辑.
进入主线逻辑文档

测试用例路由

进入Api接口测试用例文档

开发常用模块

随着项目不断完善以下列表模块会陆续增加, 各个模块被贯穿在本项目骨架的主线中.
以下模块都是主线的服务提供者,只要掌握主线逻辑,结合以下模块,会让整个项目的操作更加流畅、简洁.

序号 功能模块 文档地址
1 全局变量(日志、gorm、配置模块、雪花算法) 清单一览
2 表单参数验证器语法 validator
3 消息队列 rabbitmq文档
4 cli命令 cobra文档
5 goCurl、httpClient httpClient客户端
6 websocket js客户端 websocket服务端
7 aop切面编程 Aop切面编程
8 redis redis使用示例
9 gorm_v2 CURD 操作精华版 进入详情
10 gorm_v2操作(mysql、sqlserver、postgreSql) gorm v2 更多测试用例
11 gorm_v2 Scan Find函数查询结果一键树形化 sql结果树形化反射扫描器
12 日志记录 zap高性能日志
13 项目日志对接到 elk 服务器 elk 日志顶级解决方案
14 验证码 验证码
15 nginx配置(https、负载均衡) nginx配置详情
16 主线解耦 对验证器与控制器进行解耦
17 Casbin 接口访问权限管控 Casbin使用介绍

项目上线后,运维方案(基于docker)

序号 运维模块 文档地址
1 linux服务器 详情
2 mysql 详情
3 redis 详情
4 nginx 详情
5 go应用程序 详情
6 supervisor进程守护 详情

并发测试

点击查看详情

性能分析报告

1.开发之初,我们的目标就是追求极致的高性能,因此在项目整体功能越来越趋于完善之时,我们现将进行一次全面的性能分析评测.
2.通过执行相关代码, 跟踪 cpu 耗时 和 内存占用 来分析各个部分的性能,CPU耗时越短性、内存占用越低能越优秀,反之就比较垃圾.

通过CPU的耗时来分析相关代码段的性能

序号 分析对象 文档地址
1 项目骨架主线逻辑 主线分析报告
2 操作数据库代码段 操作数据库代码段分析报告

通过内存占用来分析相关代码段的性能

序号 分析对象 文档地址
1 操作数据库代码段 操作数据库代码段

FAQ 常见问题汇总

疑难杂症,例如:golang.org 官方依赖可能无法下载解决办法, 项目相关的疑问等等都可以在这里找到答案.
点击查看详情

招募共同开发者

1.请先看这位开发者发布的文章:"7天用go开发一个docker", 地址:https://learnku.com/articles/46878 ,在这篇文章的留言处有作者的一句话:很多东西不是会了才能做,而是做了才能学会 .
2.基于第一条“真理”, 只要你会go基础的东西,有时间,就可以一起参与开发本项目.
3.参与方式:简单的东西直接提交PR,如果想法比较多,需要改动大段代码,你也可以直接加我 qq:1990850157 ,直接添加至开发组,共同商讨开发的功能,约定规范,提交代码。
4.成为共同开发者,你可以获得 goland 官方提供的激活码,通用全部的 Jetbrains 全家桶项目.

版本

开发计划预告

1.所有的开发计划统一在 issue 部分(issue的列表、看板、里程碑三个分类进行),任何问题、新功能、bug等均可在 issue 提交,欢迎关注 issue .

V 1.5.00 2021-03-10

  • 新增
    1.为即将发布的 GinSkeleton-Admin 系统增加了基础支撑模块:casbin模块、gorm_v2 操作精华版文档,参见常用开发模块列表.
    2.token模块引用的部分常量值调整到配置文件.
    3.调整token校验中间件和casbin中间件名称.
    4.主线版本本次更新并不是很多,今后主线版本将依然保持简洁,后续的新功能模块都将以包的形式引入和调用.
    5.更多企业级的功能将在后续推出的 GinSkeleton-Admin 展现,欢迎关注本项目,反馈使用意见.

V 1.1.xx - 1.4.xx 版本日志

1.历史日志

感谢 jetbrains 为本项目提供的 goland 激活码

https://www.jetbrains.com/

MIT License Copyright (c) 2020 张奇峰 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

基于go语言gin框架封装的web项目骨架 ↓↓↓ 在线文档 ↓↓↓ (gin框架QQ群:273078549) V1.4.00版本后要求go语言版本>=1.15 展开 收起
Go
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/wxnumo/GinSkeleton.git
git@gitee.com:wxnumo/GinSkeleton.git
wxnumo
GinSkeleton
GinSkeleton
master

搜索帮助

14c37bed 8189591 565d56ea 8189591