Go版RuoYi

2024-06-13 07:44
文章标签 go ruoyi

本文主要是介绍Go版RuoYi,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RuoYi-Go https://github.com/Kun-GitHub/RuoYi-Go

1. 关于我

个人介绍

2. 介绍

后端用Go写的RuoYi权限管理系统 (功能正在持续实现)
后端 Gitee地址

3. 前端

RuoYi-Vue3 官方前端Vue3版

4. Go后端技术栈(持续在对齐项目,在补充)

功能框架是否采用备注
配置管理Viper功能丰富,支持动态重载
Envconfig轻量级库
验证码base64Captcha提供了生成各种类型验证码的功能
WebIris高性能、灵活且易于使用的Go Web框架
Gin快速且高效的Go Web框架
goFrame高性能、模块化和企业级的全栈开发框架
beego全功能的MVC框架
ORMgormGo语言中一个非常流行的ORM框架
Xorm简洁、易用且功能强大的Go语言ORM库,不过没维护了
SQLBoiler通过Go的代码生成器来实现的ORM工具
内存缓存Bigcache高性能、持久化的键值存储库
适合存储永不过期或者生命周期非常长的数据
freecache高性能的内存缓存库
GroupcacheGoogle开源的一个分布式缓存和缓存填充系统
主要用于大型系统的缓存共享
日志记录zerolog高性能的结构化日志库,专为JSON输出优化,支持零分配日志记录
适合微服务和云原生应用
Zap高性能、结构化的日志库,特别强调速度和效率
项目配合用了lumberjack,实现日志文件的自动切割和管理功能
Logrus以其易用性和灵活性著称
seelog支持复杂的过滤规则、多级日志处理管道和多种输出目标
依赖注入wire由Google开源的依赖注入工具,它通过代码生成的方式,在编译时期完成依赖注入
dig提供了高性能和可读性,支持构造函数注入、函数参数注入和结构体字段注入
Redisgo-redis/redis
ORM 代码生成工具go-gorm/genFriendly & Safer GORM powered by Code Generation
JWTjwtjwt-go 衍生版
jwx实现各种 JWx(JWA/JWE/JWK/JWS/JWT,也称为 JOSE)技术的 Go 模块

5. 数据库(后面再考虑要不要支持多几个数据库)

ORM框架数据库是否采用备注
gormPostgreSQL主要是想用这个
Mysql不用说的,很赞
Sqlite

RuoYi 数据库脚本

6. 项目目录(持续在对齐项目,在补充)

RuoYi-Go/
|-- build/
|   |-- build.cmd     // go build 文件
|-- cmd/
|   |-- main.go       // 主入口文件
|-- config/           // 配置文件目录
|   |-- config.yml    // 示例配置文件
|-- internal/
|   |-- handler/      // HTTP请求处理器
|   |-- service/      // 业务逻辑层
|   |-- repository/   // 数据访问层
|-- pkg/
|   |-- i18n/         // 国际化
|-- middleware/       // 中间件(如JWT验证)
|-- model/            // 数据模型
|-- websocket/        // WebSocket处理逻辑
|-- go.mod            // Go模块依赖管理
|-- go.sum            // Go模块依赖哈希

7. 环境(工具)

JetBrains Fleet (目前还是免费用,类似微软的VS Code,个人刚用这个Fleet,不喜勿喷) PS:发现暂不支持安装插件

DBeaver Community (SQL客户端和数据库管理工具)

Another Redis Desktop Manager (Redis 客户端)

8. 致谢

致谢 RuoYi

致谢以上项目使用到的开源库,不分先后哈

致谢以上开发用到的工具

9. 缺陷

  1. 本项目是纯后端项目,前端是用RuoYi前端,所有为了适配RuoYi前端,有些写法会不太遵循Go语言的规范,不过不影响使用,只是为了适配RuoYi前端而已
  2. 有些工具类的引用没有使用依赖注入,或者上下文,目前用的是全局变量,暂时先这样,等后续个人经验丰富了,有更好的做法可能会改上去。
  3. 暂时没有做单元测试,后续会加上,目前测试用例比较少,所以没有写单元测试。

10. 最后

目前项目还是一个人写,边工作边写,主要是下班后写,所以可能会慢一些哈,如果不介意的话,点个 Start 持续关注,谢谢啦,有什么建议可以提issue哈。

这篇关于Go版RuoYi的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056692

相关文章

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

Go中select多路复用的实现示例

《Go中select多路复用的实现示例》Go的select用于多通道通信,实现多路复用,支持随机选择、超时控制及非阻塞操作,建议合理使用以避免协程泄漏和死循环,感兴趣的可以了解一下... 目录一、什么是select基本语法:二、select 使用示例示例1:监听多个通道输入三、select的特性四、使用se

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)