sponge —— 一个强大的go开发框架,以

sponge 介绍

sponge 是一个强大的 Go 开发框架,其核心理念是通过解析 JSONSQLProtobuf 文件逆向生成模块化的代码,这些代码可以灵活、无缝地组合成多种类型的完整后端服务(类似海绵细胞的特性,打散的海绵细胞能自动重新组合成新的海绵)。sponge 提供一站式项目开发解决方案,涵盖代码生成、开发、测试、API 文档生成和部署,大幅提升开发效率,降低开发难度,实现以”低代码”方式构建高质量项目。

github地址: https://github.com/go-dev-frame/sponge


核心亮点

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

  2. 高效开发通用服务
    开发通用的 WebgRPCHTTP+gRPCgRPC Gateway 服务,只需专注于以下三部分:

    • 数据库表的定义;
    • 在 Protobuf 文件中定义 API 描述信息;
    • 在生成的模板中编写业务逻辑代码。
      服务的框架代码和 CRUD API 代码均由 sponge 自动生成。
  3. 支持自定义模板,灵活扩展
    sponge 支持通过自定义模板生成项目所需的多种代码类型,不局限于 Go 语言。例如:

    • 后端代码;
    • 前端代码;
    • 配置文件;
    • 测试代码;
    • 构建和部署脚本等。
  4. 界面化操作 在页面生成代码,使用简单又方便。


适用场景

sponge 适用于快速开发各种高性能后端服务,包括但不限于: - Web 服务(gin); - gRPC 服务; - HTTP+gRPC 混合服务; - gRPC Gateway API 服务。

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


快速开始

  1. 安装 sponge 支持在 windows、mac、linux 环境下安装 sponge,点击查看 安装 sponge 说明

  2. 打开生成代码 UI 页面 安装完成后,执行命令打开 sponge UI 页面:

   sponge run

在本地浏览器访问 http://localhost:24631,在页面上操作生成代码,如下图所示:

sponge-ui


主要功能

sponge包含丰富的组件(按需使用):


目录结构

生成的服务代码目录结构遵循 project-layout

这是生成的单体应用单体仓库(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 模块依赖项的密钥和校验文件


这是生成的微服务单体仓库(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 是一个帮助你大幅提高开发效率、降低开发成本的开发框架,通过支持主流数据库、低代码开发和自动化功能,同时支持自定义的灵活扩展功能。如果您正在寻找一种方法来显著提高开发效率并缩短上线时间,那么sponge绝对值得一试。




专题「golang相关」的其它文章 »