在 Go 生态里,Web 框架的选择通常偏向轻量,但很多开发者在项目成长过程中,会自然地追求更清晰的结构与更高的可维护性。尤其是熟悉 Spring Framework 的开发者,会希望在 Go 中也能拥有类似的工程能力。
基于这个目标,我做了这个项目:
👉 github.com/chuccp/go-w…
一、核心优势:架构能力 + Go 风格
这个框架的核心不是“多功能”,而是:
在不破坏 Go 简洁性的前提下,引入工程化能力
二、统一入口:Builder 模式
builder := wf.NewBuilder(config.LoadAutoConfig())
builder.Get("/", handler)
app := builder.Build()
app.Run(ctx)
优势:
- 启动流程清晰
- 配置集中管理
- 易于扩展与组合
👉 类似 Spring Boot,但更轻量、更直接
三、内建生命周期与依赖管理
Init(ctx)
所有组件统一初始化,支持:
- Model(数据层)
- Service(业务层)
- Filter(中间件)
- Runner(后台任务)
优势:
- 生命周期统一管理
- 依赖关系清晰
- 避免随意实例化带来的混乱
四、清晰分层结构(自然形成)
Controller → Service → Model
优势:
- 业务逻辑与请求处理分离
- 数据访问与业务逻辑解耦
- 项目结构更清晰、可维护
五、声明式路由策略(核心亮点)
ctx.Get("/api/profile", handler).
WithMeta(RequireAuth(), RequirePermission("user"))
优势:
- 策略与业务代码解耦
- 每个路由可独立配置
- 逻辑更清晰、更可读
👉 实现类似 Spring AOP 的能力,但用 Go 的方式表达
六、扩展优先的设计理念
框架不追求“内置一切”,而是提供清晰的扩展体系:
- Filter(请求处理链)
- Component(通用组件)
- Model(数据访问)
- Runner(后台任务)
- Meta(策略系统)
优势:
- 灵活扩展
- 易于定制
- 避免功能臃肿
七、横切能力统一入口(Meta)
.WithMeta(
RequireAuth(),
RequirePermission("admin"),
)
优势:
- 权限、限流等统一表达方式
- 不侵入业务代码
- 支持组合与扩展
👉 可以构建完整的策略系统(Policy System)
八、开发体验优势
- 写法符合 Go 习惯(无注解、低反射)
- 结构清晰,易于理解
- 组件化设计,复用性强
- 适合 AI 辅助开发(结构明确)
九、适用场景
特别适合:
- 中小团队项目
- RESTful API 服务
- 管理后台 / CRUD 系统
- 需要清晰架构的 Go 项目
十、设计理念总结
这个框架的核心不是“模仿”,而是:
用 Go 的方式,表达工程化能力
🔗 项目地址
如果你在找一个既保持 Go 简洁性,又具备工程能力的框架,这个项目值得一试。