Become a sponsor

概述
选择一个后台管理基座,核心看三点:架构是否经得起二次开发、功能是否开箱即用、工程是否可持续维护。EasyGoAdmin 在这三点上均有明确的设计决策与工程约束。
基于 GoFrame v2 企业级框架,原生并发能力 + 静态编译单文件部署。中间件链、泛型基座、元数据标签均以 Go 惯用法实现,开箱即用、无框架侵入。
go build -o bin/admin-server.exe main.go # 单文件产物
./bin/admin-server.exe # :8000 直接运行ModuleSpec 泛型基座把「筛选、排序、树形、字典文本、文件字段、唯一校验、数据权限」全部声明化。一个标准模块的业务方法只需三行委托:
func (s *sJob) Page(ctx context.Context, req *v1.JobPageReq) (*v1.JobPageRes, error) {
list, total, err := jobSpec.Page(ctx, req, req.GetPageNo(), req.GetPageSize())
// ...
return v1.NewPageData(req.GetPageNo(), req.GetPageSize(), total, derefSlice(list)), nil
}差异进声明与钩子,写不进钩子就手写(合法逃生舱),基座永不出现"按模块分支"的代码。
请求结构体上的一个 gmeta 标签同时驱动四件事:路由注册、权限校验、操作日志、OpenAPI 文档。杜绝"代码、路由表、权限表、文档"四处不一致的行业顽疾。
gmeta.Meta `method:"get" path:"/api/user/page" summary:"用户分页"
permission:"sys:user:page" log:"用户管理-查询分页记录" logType:"query"`审计字段盖章、软删除改写、租户隔离三类横切逻辑全部在 gdb 模型钩子层完成。dao.{X}.Ctx(ctx) 是唯一查询入口,业务代码不写一行 del_flag/tenant_id 条件。
不只是生成代码——同步创建菜单、权限节点、字典数据、路由注册行(全部幂等)。生成的 logic 是 ModuleSpec 基座风格的完整可用实现,go build 后即可运行。
五方言驱动运行时切换;内置整库迁移器(内省 → 中间表示 → 方言 DDL → 分批搬运 → 序列修复),mysql→pgsql/sqlite/mssql 均有实测日志留档。
| 维度 | EasyGoAdmin(GoFrame) | 通用 Go Admin 项目 |
|---|---|---|
| CRUD 开发量 | 声明式基座 + 生成器 | 多数需手写 |
| 元数据体系 | gmeta 反射(路由/权限/日志/OpenAPI 一体) | 通常仅路由 |
| 多租户 | 全局钩子自动隔离,9 张租户级表 | 需自行集成 |
| 数据权限 | 四档角色数据权限,一行声明接线 | 部分支持 |
| 多数据库 | 五方言 + 整库迁移器 | 多数 1-2 种 |
| 限流防护 | 固定窗口 + 认证入口独立阈值 + 受信代理 | 部分支持 |
| 在线用户 | 双令牌拉黑强退,防刷新复活 | 部分支持 |
项目对"容易腐化的地方"有明确的硬约束,这些约束写在代码结构里,不靠口头约定: