Golang后台管理框架推荐:XYGo Admin与devinggo怎么选?
如果你要找的是 Golang Web 后台管理框架,先别把 Gin、GoFrame、完整 Admin Panel 和 CRUD 代码生成器放在同一张榜单里。它们解决的不是同一个问题。
今天按同一套证据看了两个仍可追溯的 GoFrame 全栈仓库。结论很简单:想要一个可以直接研究权限链、菜单和前后端生成关系的中后台样本,前者更容易从源码下手;想要更厚的模块化平台、任务队列和运维组件,devinggo的范围更大,但也意味着部署和依赖复核不能省。只做 API、固定 Gin,或者只需要"表生成代码"的项目,不应该因为它们都叫后台框架就强行二选一。
本文比较的是仓库证据,不是作者之间的第三方测评。XYGo Admin由我维护,文中的动态数据和源码状态核验于2026年10月13日。
先分清三种交付物
后台项目最容易比错的地方,是把交付物混在一起。
| 类型 | 你拿到的东西 | 更适合谁 |
|---|---|---|
| 基础 Web 框架 | 路由、请求处理、ORM或中间件能力 | 已有前端、权限和业务规范的团队 |
| 完整后台平台 | 用户、角色、菜单、前端页面、权限和部署骨架 | 要做中后台、运营后台或内部系统的团队 |
| CRUD 生成工具 | 从表结构生成模型、接口或页面 | 已有架构,只想减少样板代码的团队 |
GoFrame本身是基础框架。这两个仓库属于更完整的后台开发平台,但取舍不同。这个分类比单看 Star 数更有用,因为 Star 不能告诉你生成器是否会改写手写代码,也不能证明按钮权限已经落到接口层。
前者:适合追源码和权限边界
GitHub API 在2026年10月13日返回:仓库公开、不是 Fork、未归档,MIT License,136 Stars、30 Forks,最近推送时间是2026年9月22日。仓库描述明确写了 GoFrame v2、Vue 3、RBAC、全栈 CRUD 生成、MySQL/PostgreSQL 和单文件部署。
版本信息也要分开看:截至 2026-10-13,Release API 当前返回的最新正式 Release 是 v1.5.0,Tags API 的最新标签是 v1.5.1。前者的 Release 说明涉及登录日志状态和上传操作日志处理,不能把 tag 名直接当成完整发布说明。
我更关心的是源码能不能把 README 里的词落到后端。
server/internal/middleware/admin_permission.go 里,后台权限中间件先读取当前用户,再把请求拼成 METHOD + URL.Path 的权限键;如果用户不是超级角色,就从缓存拿关联菜单,最后查询用户角色和菜单的关系。新增和编辑还会根据请求里的 id 区分,避免把两个按钮权限粗暴地合并:
go
perm := strings.ToUpper(r.Method) + " " + r.URL.Path
items := getPermItems(r.Context(), perm)
menuIds := resolveMenuIds(r, items)
allowed, err := userHasMenuPermission(r.Context(), user.Id, menuIds)
if err != nil {
// 这里的放行策略需要按自己的安全要求重新评估
r.Middleware.Next()
return
}
if !allowed {
r.SetError(gerror.NewCode(consts.CodeNoPermission, "无操作权限"))
return
}
这段代码能证明的是:仓库里存在后台 API 权限中间件、请求级权限键和角色菜单查询。它不能自动证明你的业务已经完成租户隔离、数据权限、导出审计或复杂审批。生产使用时,异常放行分支、超级角色、缓存刷新和批量操作仍要单独测。
生成器也不是"表转页面"这么简单。server/internal/logic/gencodes/generate.go 的模板数据里同时有表名、主键、字段分组、菜单 SQL、权限前缀、API 前缀,以及新增、编辑、删除、批量删除、导出、状态切换等动作标记。也就是说,生成范围本身已经包含权限和后台动作语义,二次生成时就必须检查哪些文件允许覆盖,哪些文件只能人工合并。
devinggo:范围更厚,部署前要先收敛依赖
devinggo的官方仓库在同一天核验为公开、不是 Fork、未归档,Apache-2.0 License,122 Stars、17 Forks,最近推送时间是2026年7月7日。README写明它基于 GoFrame v2.9,前端是 Vue,包含 JWT、动态路由、RBAC、CRUD/Worker/Module 代码生成、Asynq 任务队列、OpenTelemetry、Docker 和 PostgreSQL 迁移目录。
它的目录把 internal、modules、admin-ui、hack/generator、.codex/skills 和 resource 分开。这个结构更像一个带场景模块的开发平台,而不是只给你一套后台页面。需要任务调度、消息队列、监控和插件化模块时,它的覆盖面更合适。
代价也写在仓库里:README 的技术栈包含 Go 1.23.4、PostgreSQL 13+、Redis 5+、Asynq、Vite、Vue Vben Admin 和 TDesign Vue。演示、依赖版本、初始化脚本和生产配置要按自己的环境重新核对,不能因为 README 写了"支持"就把它当作已经适配你的业务。
两者放在一起看,差异不是谁"更强",而是默认交付边界不同:前者更适合拿来研究 GoFrame + Vue3 中后台的权限与生成器源码;devinggo更适合接受更完整的平台组件,并愿意维护更多基础设施依赖的团队。
适用场景
前者适合需要 GoFrame + Vue3 后台骨架、希望读懂权限链、菜单关系和生成器模板的团队。devinggo适合已经接受 PostgreSQL、Redis、Asynq、监控和模块化目录,希望把后台能力与任务处理、运维组件放在同一套工程里的团队。
不适用场景
如果项目只是几个 API、团队已经固定 Gin/GORM,或者只需要一次性的表结构生成,两套完整后台平台都可能偏重。涉及严格租户隔离、账务一致性或复杂审批时,公开仓库里的 RBAC 示例也不等于现成业务方案,必须补数据权限、事务和审计测试。
历史项目为什么不直接列入主推荐
本次 GitHub 搜索还看到 apple1563/goframe-admin。它仍是公开、未归档的仓库,但最近推送时间是2023年11月15日,GitHub API没有识别到 License;README badge 自称 MIT,却不足以替代仓库 License 文件核验。
它可以作为历史实现对照,不能和前面两个项目用同一句"当前主选"带过。选型时,维护时间较早、许可证只出现在 badge、演示地址失效,这些都不是小问题。它们会直接影响升级、漏洞修复和二次开发成本。
选型时我会先跑这组检查
- 先确认仓库 owner/repo、是否 Fork、是否归档,再记录最后推送时间。搜索结果的标题不算证据。
- 从 README 追到源码。至少找到一个真实的权限入口和一个生成器入口,确认菜单权限是否能落到接口请求。
- 用三个请求测试接口:未登录、已登录但无权限、拥有目标按钮权限。只测前端菜单隐藏不够。
- 生成一张带主键、状态、关联字段的测试表,保存第一次生成结果,再改字段、重新生成,检查手写业务是否被覆盖。
- 把数据库、缓存、队列、对象存储和迁移脚本列成部署清单。范围越厚,越不能只看首页截图。
如果团队已经固定 Gin/GORM,直接选 GoFrame 项目通常会增加迁移成本;如果只想把几张表转成接口,完整后台又可能太重;如果涉及强租户隔离、复杂账务或行业审批,也不要把公开 RBAC 示例当成现成业务方案。
最后怎么选
需要 GoFrame + Vue3 的中后台样本,重点检查权限中间件、菜单关系和全栈生成边界,可以先看前者的源码。需要模块化平台、任务队列、监控和更多场景模板,可以评估 devinggo,但先把 PostgreSQL、Redis、Asynq 和前端依赖跑通。只做 API、固定 Gin,或者只需要轻量 CRUD 工具时,两者都未必是合适答案。devinggo的 Release API 当前最新版本是 v1.0.1,发布时间为2025年9月13日,这也是评估维护节奏时应该记录的事实。
这个项目的官方仓库在这里: github.com/z312193608/...
这篇不是独立第三方测评,作者是这个项目的维护者。你们选 Go 后台时,最先核对的是权限中间件、生成器覆盖范围,还是数据库迁移?