1.2 为什么选择我们
概述
选择一个后台管理基座,核心看三点:架构是否经得起二次开发、功能是否开箱即用、工程是否可持续维护。EasyGoAdmin 在这三点上均有明确的设计决策与工程约束。
六大核心优势
1. Go 语言高性能后端
基于 GoFrame v2 企业级框架,原生并发能力 + 静态编译单文件部署。中间件链、泛型基座、反射注解均以 Go 惯用法实现,无 PHP/Java 式框架侵入。
text
go build -o bin/admin-server.exe main.go # 单文件产物
./bin/admin-server.exe # :8000 直接运行2. 声明式 CRUD 基座
ModuleSpec 泛型基座把「筛选、排序、树形、字典文本、文件字段、唯一校验、数据权限」全部声明化。一个标准模块的业务方法只需三行委托:
go
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
}差异进声明与钩子,写不进钩子就手写(合法逃生舱),基座永不出现"按模块分支"的代码。
3. gmeta 注解即事实
请求结构体上的一个 gmeta 标签同时驱动四件事:路由注册、权限校验、操作日志、OpenAPI 文档。杜绝"代码、路由表、权限表、文档"四处不一致的行业顽疾。
go
gmeta.Meta `method:"get" path:"/api/user/page" summary:"用户分页"
permission:"sys:user:page" log:"用户管理-查询分页记录" logType:"query"`4. 全局钩子横切,业务零感知
审计字段盖章、软删除改写、租户隔离三类横切逻辑全部在 gdb 模型钩子层完成。dao.{X}.Ctx(ctx) 是唯一查询入口,业务代码不写一行 del_flag/tenant_id 条件。
5. 代码生成器全流程打通
不只是生成代码——同步创建菜单、权限节点、字典数据、路由注册行(全部幂等)。生成的 logic 是 ModuleSpec 基座风格的完整可用实现,go build 后即可运行。
6. 五数据库 + 整库迁移实测
五方言驱动运行时切换;内置整库迁移器(内省 → 中间表示 → 方言 DDL → 分批搬运 → 序列修复),mysql→pgsql/sqlite/mssql 均有实测日志留档。
与常见方案的对比
| 维度 | EasyGoAdmin(GoFrame) | 传统 PHP 后台 | 通用 Go Admin 项目 |
|---|---|---|---|
| 部署形态 | 单二进制文件 | 运行时 + 依赖目录 | 单二进制文件 |
| CRUD 开发量 | 声明式基座 + 生成器 | 基类继承 + 手写 | 多数需手写 |
| 注解体系 | gmeta 反射(路由/权限/日志/OpenAPI 一体) | Attribute 注解 | 通常仅路由 |
| 多租户 | 全局钩子自动隔离,9 张租户级表 | 基类手动处理 | 需自行集成 |
| 数据权限 | 四档角色数据权限,一行声明接线 | 通常无或插件 | 部分支持 |
| 多数据库 | 五方言 + 整库迁移器 | 通常 MySQL 为主 | 多数 1-2 种 |
| 限流防护 | 固定窗口 + 认证入口独立阈值 + 受信代理 | 通常依赖扩展 | 部分支持 |
| 在线用户 | 双令牌拉黑强退,防刷新复活 | Session 方案 | 部分支持 |
工程纪律保障
项目对"容易腐化的地方"有明确的硬约束,这些约束写在代码结构里,不靠口头约定:
- 依赖方向单向:task→logic 允许、logic→task 禁止;middleware 不 import 业务包(函数变量接线);migrate 不走 dao(不触发钩子)
- service 接口手维护:禁止整体运行 gf gen service,接口文件即文档
- base.go 导出函数上限 15 个:超出按能力拆子包,防止共享层膨胀成垃圾抽屉
- 唯一真值原则:并发唯一性靠数据库 uk_* 索引(预检仅为 UX);字典文案唯一真相在字典管理页;权限判定唯一入口 HasPerm
- 软删统一:删除接口全部软删(del_flag=1),物理删除只在定时清理任务中出现
谁在使用本项目
- 需要快速交付的软件公司:生成器 + 基座把 CRUD 开发压缩到分钟级
- 有 SaaS 需求的创业团队:租户隔离 + 开户事务 + 用户上限开箱即用
- 学习 Go 企业级开发的团队:分层、钩子、泛型、反射注解的真实工程样本