项目介绍
这是什么
RuoYi-Go-Vue-Plus 是 RuoYi-Vue-Plus(Java 版,dromara / 若依团队)的 Go ( Gin) 重写版,适配 RuoYi-Plus-UI 6.X 前端。致敬原项目作者「疯狂的狮子Li」及若依开源社区。
- GitHub 地址:https://github.com/HandsomeNPC/RuoYi-Go-Vue-Plus
- Gitee 地址:https://gitee.com/handsome-npc/RuoYi-Go-Vue-Plus
- 前端 UI:plus-ui 6.X
技术栈
| 维度 | 选型 |
|---|---|
| 语言 / 框架 | Go 1.26+ 、Gin、GORM、go-redis |
| 数据库 / 缓存 | MySQL 8.x + Redis 6.x |
| 鉴权 | sa-token-go(JWT + Redis 存会话) |
| 部署 | 多模块拆进程 + nginx 负载均衡,或 standalone 单体 |
主要优势
- 启动快:Go 编译成原生二进制,毫秒级启动。
- 占用少:内存与 CPU 占用远低于 JVM。
- 架构清晰:多模块拆进程 + 严格三层分层,每个业务模块独立编译独立进程。
与原项目的关系
| RuoYi (Java) | 本项目 (Go) |
|---|---|
| ruoyi-admin(聚合启动) | cmd/<module>/main.go(每模块一进程) |
| Controller | internal/<module>/handler |
| IXxxService / XxxServiceImpl | internal/<module>/service |
| XxxMapper (MyBatis) | internal/<module>/repository(GORM) |
| domain / domain.bo / domain.vo | model(entity / dto / vo) |
| ruoyi-common-* | pkg/* |
| R<T> / TableDataInfo | pkg/response.R[T] / PageResult[T] |
| PageQuery | pkg/repository.PageQuery |
| sa-token(@SaCheckPermission) | pkg/middleware 鉴权中间件 + sa-token-go |
| @DataPermission(SpEL + 拦截器) | repository 层 GORM Scopes / Callback 手写 |
| @Log(AOP) | pkg/oplog 注解 + Recorder 回调 |
| hutool Tree | pkg/tree(扁平 JSON 契约自实现) |
| ExcelUtil(easyexcel) | pkg/excel(tag 驱动导出 / 导入) |
| justauth(三方登录) | pkg/social(自接 gitee/github/maxkey/topiam) |
迁移中两个最难处的处理方式:
- 数据权限
@DataPermission:Java 用 SpEL 注解 + MyBatis 拦截器动态拼 SQL 做部门 / 角色数据隔离。Go 无等价机制,改在 repository 层用 GORM Scopes / Callback 手写数据权限过滤。详见 迁移笔记 / 数据权限。 - sa-token 认证鉴权:Java 用 sa-token 管登录态、
@SaCheckPermission校验权限。Go 用 sa-token-go(JWT + Redis 存会话)复刻,权限校验改为pkg/middleware鉴权中间件查权限码。详见 迁移笔记 / sa-token。
接下来
- 第一次跑起来 → 快速开始 / 环境准备
- 理解整体设计 → 架构总览
- 写新 CRUD → CRUD 指南