go-template

command module
v1.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 26, 2025 License: Apache-2.0 Imports: 1 Imported by: 0

README

go-template - 企业级 API 脚手架

Go Version Echo Version License

📖 项目简介

go-template 是一个基于 Echo + Fx 的服务模板,围绕 Clean Architecture 构建,提供完备的认证授权、数据库访问、可观测性与工程化工具链,帮助团队快速落地生产可用的 API 服务。

✨ 核心特性

  • 分层架构:业务、数据、接口职责清晰,方便扩展与测试
  • 依赖注入:通过 Uber Fx 组织组件与生命周期
  • 数据访问:集成 GORM、数据库迁移与查询封装
  • 认证与权限:内置 JWT 登录流程与 Casbin RBAC 模型
  • 工程化工具:Makefile、代码生成器、lint/test 流水线即开即用
  • 可观测性:结构化日志、健康检查、Prometheus 指标支持

🚀 快速开始

环境准备
  • Go 1.24+
  • MySQL、Redis 等可选基础设施(可在配置中关闭)
初始化项目
# 1. 安装 CLI(可在任何目录执行)
go install github.com/NSObjects/go-template/muban@latest

# 2. 使用 CLI 生成项目(无需预先下载模板仓库)
muban new project \
  --module=github.com/acme/awesome-api \
  --output=../awesome-api

# 3. 进入新项目目录并启动服务
cd ../awesome-api
make dev-setup
make run
常用命令
命令 说明
make dev 启动热加载开发环境
make test 执行单元测试
make lint 运行 golangci-lint
make db-gen 根据数据库生成 GORM 代码
make gen-code 生成错误码和文档

🧰 生成新项目

使用 muban CLI 可以把模板复制成新的仓库:

# 在目标目录生成新项目
muban new project \
  --module=github.com/acme/awesome-api \
  --output=../awesome-api

# 自定义展示名称或覆盖目录
muban new project \
  --module=github.com/acme/awesome-api \
  --name="Awesome API" \
  --output=../awesome-api \
  --force

如果你正在本仓库中开发 CLI,也可以直接运行源码:

go run ./muban -- new project \
  --module=github.com/acme/awesome-api \
  --output=../awesome-api

或者通过 Makefile 包装:

make init-project MODULE=github.com/acme/awesome-api OUTPUT=../awesome-api

📁 项目结构

go-template/
├── cmd/                # 命令入口与 FX 组合
├── configs/            # 配置文件与示例
├── doc/                # OpenAPI 等规范文件
├── internal/           # 业务代码 (api/biz/data/service)
├── scripts/            # 开发脚本
├── sql/                # 数据库迁移
├── muban/              # 项目 CLI 与代码生成器
└── Makefile            # 常用任务
API 分层说明

internal/api 目录按照 Clean Architecture 分为三层:

  • service 层:暴露 HTTP/RPC 接口,负责参数绑定、校验、错误转换以及中间件集成,只依赖 biz 层并通过响应模型向外输出数据。
  • biz 层:实现核心业务用例,组织领域服务、事务控制和跨模块协作,不直接依赖底层技术细节,而是通过接口与 data 层交互。
  • data 层:封装数据库、缓存和第三方服务访问,提供 biz 层所需的仓储实现,并统一处理连接池、重试、监控等基础能力。

🛠️ 开发建议

  • 使用 make gen-module 家族命令快速生成模块骨架
  • make lintmake test 集成到 CI/CD 中
  • 结合 doc/openapi.yaml 与代码生成器保持接口与文档一致

📄 许可证

MIT License

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL