Skip to content

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 企业级开发的团队:分层、钩子、泛型、反射注解的真实工程样本

小蚂蚁云团队 · 提供技术支持