sponge/assets/readme-cn.md

12 KiB
Raw Blame History

English | 简体中文


Sponge 是一个强大且易用的 Go 开发框架,其核心理念是 定义即代码 (Definition is Code),通过解析 SQLProtobufJSON 文件生成模块化的 Go 代码,这些模块代码可灵活组合成多种类型的完整后端服务。

Sponge 提供一站式项目开发解决方案涵盖代码生成、开发、测试、API 文档和部署等,帮助开发者以"低代码"方式轻松构建稳定可靠的高性能后端服务(包括 RESTful API、gRPC、HTTP+gRPC、gRPC Gateway 等)。


为什么选择 Sponge

  • 开发效率极高 自动生成 CRUD API、项目脚手架和胶水代码(非业务代码),彻底解决传统开发过程中的大量重复劳动问题。
  • 开箱即用:覆盖开发全生命周期(生成→开发→测试→部署→监控),避免碎片化工具链。
  • 标准化最佳实践:基于 Go 社区成熟方案Gin/gRPC/Protobuf 等),避免技术选型纠结。
  • 极简学习曲线:通过代码生成和清晰示例,快速上手,专注业务逻辑。
  • 适合团队协作:统一项目结构,提升代码可维护性。
  • AI协作:基于 Sponge 规范目录与文件结构,智能生成业务逻辑代码,显著降低手工编码,提升开发效率与代码一致性。

关键特性

一键生成完整后端服务代码。

对于仅需 CRUD APIWebgRPCHTTP+gRPC服务,无需编写任何 Go 代码。只需连接数据库(如 MySQLMongoDBPostgreSQLSQLite),即可一键生成完整后端服务代码,并轻松部署到 Linux 服务器、Docker 或 Kubernetes 上。

高效开发通用服务,从定义到实现一步到位。

构建通用的 WebgRPCHTTP+gRPCgRPC Gateway 服务,只需专注以下三步:

  • 定义数据库表 (SQL DDL)
  • 在 Protobuf 文件中描述 API (Protobuf IDL)
  • 实现业务逻辑 (支持内置 AI 助手自动生成并合并业务逻辑代码)。

包括 CRUD API、服务框架及胶水代码 在内的所有基础代码均由 Sponge 自动生成,让开发者聚焦核心业务,全面提升开发效率。

支持自定义模板,灵活扩展。

Sponge 支持通过自定义模板生成项目所需的多种代码类型,不局限于 Go 语言。例如后端代码前端代码测试代码构建和部署脚本等。

在页面生成代码,简单易用。

Sponge 提供在页面生成代码,避免了复杂的命令行操作,只需在页面上简单的填写参数即可一键生成代码。

Sponge 与 AI 助手协同开发,实现基础设施自动化和业务逻辑智能化。

Sponge 搭配内置的 AI 助手(DeepSeek、ChatGPT、Gemini),构建出一套完整、高效、智能的开发解决方案:

  • Sponge:负责基础设施代码自动生成,包括 服务框架CRUD API自定义 API(不含业务逻辑) 等代码,确保架构统一、规范化。
  • AI 助手:专注于业务逻辑实现,辅助完成 数据表设计Protobuf API 定义业务逻辑编写 等任务,减少重复劳动、提升研发效率。

适用场景

Sponge 适用于快速构建多种类型的高性能后端服务,适用场景如下:

  • 开发 RESTful API 服务
  • 构建微服务项目
  • 云原生项目开发
  • 快速重构旧有项目
  • 作为 Go 初学者或团队学习的最佳实践的起点

此外,开发者还可以通过自定义模板,生成满足业务需求的各类代码。


在线体验

Sponge 提供在线体验生成代码:Code Generation

注:若需在本地运行下载的服务代码,需先完成 Sponge 的本地安装。


快速上手

  1. 安装 Sponge:支持 Windows/macOS/Linux/Docker查看 Sponge 安装指南

  2. 打开生成代码 UI 页面

    sponge run
    

    在本地浏览器访问 http://localhost:24631生成代码。

  3. 示例:一键生成完整的 Web 服务后端代码

    • 连接数据库,选择表名。
    • 下载代码:得到完整代码。
    • 生成 swagger 文档:make docs
    • 运行:make run
    • 测试:在浏览器访问 swagger 文档 http://localhost:8080/swagger/index.html 测试 API。


组件

Sponge 内置了 Go 生态常见的 30+ 个组件(按需使用),包括 Gin, gRPC, GORM, MongoDB, Redis, Kafka, DTM, WebSocket, Prometheus 等主流技术栈,查看所有组件


代码生成引擎

Sponge 提供强大的代码生成能力,支持基于内置模板自定义模板两种方式快速生成项目所需代码,同时集成AI 助手辅助生成业务逻辑代码。

  1. Sponge 基于内置模板生成代码框架,如下图所示:


  1. Sponge 基于自定义模板生成代码框架,如下图所示:


  1. Sponge 基于函数及注释生成业务逻辑代码框架,如下图所示:


微服务框架

Sponge 是一个现代化的 Go 微服务框架,它采用典型的微服务分层架构,内置了丰富的服务治理功能,帮助开发者快速构建和维护复杂的微服务系统,框架结构如下图所示:


创建的 HTTP 和 gRPC 服务代码的性能测试: 50个并发总共100万个请求。

http-server

grpc-server

点击查看 测试代码


目录结构

Sponge 创建的服务代码目录结构遵循 project-layout

Sponge 支持创建 单体应用单体仓库(monolith)微服务多仓库(multi-repo)微服务单体仓库(mono-repo)项目代码结构。

1. 单体应用单体仓库(monolith)或微服务多仓库(multi-repo)目录结构说明。
   .
   ├── api            # protobuf文件和生成的*pb.go目录
   ├── assets         # 其他与资源库一起使用的资产(图片、logo等)目录
   ├── cmd            # 程序入口目录
   ├── configs        # 配置文件的目录
   ├── deployments    # 裸机、docker、k8s部署脚本目录
   ├── docs           # 设计文档和界面文档目录
   ├── internal       # 项目内部代码目录
   │    ├── cache        # 基于业务包装的缓存目录
   │    ├── config       # Go结构的配置文件目录
   │    ├── dao          # 数据访问目录
   │    ├── database     # 数据库目录
   │    ├── ecode        # 自定义业务错误代码目录
   │    ├── handler      # http的业务功能实现目录
   │    ├── model        # 数据库模型目录
   │    ├── routers      # http路由目录
   │    ├── rpcclient    # 连接grpc服务的客户端目录
   │    ├── server       # 服务入口包括http、grpc等
   │    ├── service      # grpc的业务功能实现目录
   │    └── types        # http的请求和响应类型目录
   ├── pkg            # 外部应用程序可以使用的库目录
   ├── scripts        # 执行脚本目录
   ├── test           # 额外的外部测试程序和测试数据
   ├── third_party    # 依赖第三方protobuf文件或其他工具的目录
   ├── Makefile       # 开发、测试、部署相关的命令集合
   ├── go.mod         # go 模块依赖关系和版本控制文件
   └── go.sum         # go 模块依赖项的密钥和校验文件
2. 微服务单体仓库(mono-repo)(大仓库)目录结构说明。
   .
   ├── api
   │    ├── server1       # 服务1的protobuf文件和生成的*pb.go目录
   │    ├── server2       # 服务2的protobuf文件和生成的*pb.go目录
   │    ├── server3       # 服务3的protobuf文件和生成的*pb.go目录
   │    └── ...
   ├── server1        # 服务1的代码目录与微服务多仓库(multi-repo)目录结构基本一样
   ├── server2        # 服务2的代码目录与微服务多仓库(multi-repo)目录结构基本一样
   ├── server3        # 服务3的代码目录与微服务多仓库(multi-repo)目录结构基本一样
   ├── ...
   ├── third_party    # 依赖的第三方protobuf文件
   ├── go.mod         # go 模块依赖关系和版本控制文件
   └── go.sum         # go 模块依赖项的密钥和校验和文件

文档

点击查看 Sponge 官方文档,完整涵盖了开发指南、组件、服务配置与部署方案等核心内容。


示例

Sponge 创建服务代码示例

分布式事务示例

Sponge+AI 助手协同开发示例

Sponge 开发项目示例


贡献

欢迎 Issue/PR贡献指南

如果 Sponge 对您有帮助,请给个 Star这将激励我们继续迭代。


社区交流

欢迎加入go sponge微信群交流,加微信(备注sponge)进群。