golang一键生成全栈生产级项目插件库create-go-app的使用
Golang一键生成全栈生产级项目插件库create-go-app的使用
快速开始
首先,下载并安装Go 1.21或更高版本。
安装方法
使用go install
命令安装:
go install github.com/create-go-app/cli/v4/cmd/cgapp@latest
或者使用Homebrew安装(适用于GNU/Linux和macOS用户):
# 添加新的formula
brew tap create-go-app/tap
# 安装
brew install create-go-app/tap/cgapp
创建新项目
在当前目录下通过交互式控制台UI创建新项目:
cgapp create
部署项目
打开生成的Ansible inventory文件(名为hosts.ini
),根据服务器配置填写变量,然后可以自动部署项目:
cgapp deploy
Docker方式快速启动
如果不希望在系统中安装Create Go App CLI,可以使用官方Docker镜像从隔离容器中运行CLI:
docker run --rm -it -v ${PWD}:${PWD} -w ${PWD} koddr/cgapp:latest [COMMAND]
注意:deploy
命令当前在此镜像中不可用。
生产就绪的项目模板
后端模板
-
使用Golang内置
net/http
包:net/http
- 包含CRUD和JWT认证的简单REST API
-
使用Fiber框架:
fiber
- 包含CRUD、带续订令牌的JWT认证、数据库和缓存的复杂REST API
-
使用go-chi框架:
chi
- 包含健康检查的基本应用
前端模板
前端部分将使用Vite.js生成,支持以下模板:
名称 | 描述 | JavaScript | Typescript |
---|---|---|---|
Pure | 纯JavaScript/Typescript应用 | vanilla |
vanilla-ts |
React | 普通React应用 | react |
react-ts |
React (SWC) | 使用SWC的React应用 | react-swc |
react-swc-ts |
Preact | 普通Preact应用 | preact |
preact-ts |
Vue.js | 普通Vue.js应用 | vue |
vue-ts |
Svelte | 普通Svelte应用 | svelte |
svelte-ts |
Solid | 普通Solid应用 | solid |
solid-ts |
Lit | 普通Lit应用 | lit |
lit-ts |
Qwik | 普通Qwik应用 | qwik |
qwik-ts |
Next.js和Nuxt前端部分将使用最新的create-next-app
和nuxi
工具生成。
预配置的Ansible角色
Web/代理服务器
-
Traefik Proxy角色:
traefik
- 配置了简单ACME挑战的Traefik容器traefik-acme-dns
- 配置了复杂ACME DNS挑战的Traefik容器
-
Nginx角色:
nginx
- 具有"最佳实践"配置的纯Nginx容器
数据库
- PostgreSQL角色:
postgres
- 配置了应用后端迁移的PostgreSQL容器
缓存(键值存储)
- Redis角色:
redis
- 为后端配置的Redis容器
示例代码
以下是一个使用create-go-app创建的简单Fiber后端示例:
package main
import (
"github.com/gofiber/fiber/v2"
)
func main() {
// 创建新的Fiber应用
app := fiber.New()
// 定义路由
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})
// 启动服务器
app.Listen(":3000")
}
注意事项
- 确保使用npm版本7或更高版本来正确创建项目的前端部分
- 使用Docker镜像时,已经包含正确版本的npm
- 从v2.0.0开始,推荐使用Traefik Proxy作为默认代理服务器
这个工具可以帮助开发者快速搭建生产就绪的全栈项目,专注于业务逻辑而不是基础设施配置。
更多关于golang一键生成全栈生产级项目插件库create-go-app的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
更多关于golang一键生成全栈生产级项目插件库create-go-app的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
create-go-app 插件库使用指南
create-go-app 是一个强大的 Go 语言全栈项目生成工具,可以帮助开发者快速搭建生产级 Go 应用程序的基础架构。下面我将详细介绍它的使用方法。
安装 create-go-app
首先需要安装 create-go-app 工具:
# 使用 Go 安装
go install github.com/create-go-app/cli/v4/cmd/cgapp@latest
# 或者使用 Homebrew (macOS/Linux)
brew install create-go-app/tap/cgapp
创建新项目
# 创建新项目
cgapp create my-awesome-app
# 或者指定项目模板
cgapp create my-awesome-app --template fiber
常用模板
create-go-app 支持多种流行框架的模板:
fiber
- Fiber web 框架gin
- Gin web 框架echo
- Echo web 框架chi
- Chi 路由框架standard
- 标准库实现
项目结构
生成的项目通常包含以下结构:
my-awesome-app/
├── cmd/ # 主应用程序入口
├── configs/ # 配置文件
├── internal/ # 内部应用代码
│ ├── controller/ # 控制器层
│ ├── entity/ # 数据实体
│ ├── repository/ # 数据访问层
│ ├── service/ # 业务逻辑层
│ └── transport/ # 传输层(HTTP/gRPC等)
├── pkg/ # 可复用的公共代码
├── migrations/ # 数据库迁移文件
├── tests/ # 测试代码
├── web/ # 前端代码(如果选择全栈)
├── go.mod # Go 模块文件
└── README.md # 项目文档
代码示例
以下是一个生成的 Fiber 控制器示例:
// internal/controller/v1/user.go
package v1
import (
"net/http"
"github.com/gofiber/fiber/v2"
"my-awesome-app/internal/entity"
"my-awesome-app/internal/service"
"my-awesome-app/pkg/response"
)
type UserController struct {
userService service.User
}
func NewUserController(s service.User) *UserController {
return &UserController{
userService: s,
}
}
// GetUsers godoc
// @Summary Get all users
// @Description Get list of all users
// @Tags users
// @Accept json
// @Produce json
// @Success 200 {object} response.Response{data=[]entity.User}
// @Failure 500 {object} response.Response
// @Router /api/v1/users [get]
func (c *UserController) GetUsers(ctx *fiber.Ctx) error {
users, err := c.userService.GetAll(ctx.Context())
if err != nil {
return response.Error(ctx, http.StatusInternalServerError, err)
}
return response.Success(ctx, users)
}
常用命令
# 运行项目
go run cmd/app/main.go
# 构建项目
go build -o bin/app cmd/app/main.go
# 运行数据库迁移
go run cmd/migrate/main.go up
# 运行测试
go test ./...
# 生成 Swagger 文档
swag init -g cmd/app/main.go
配置管理
生成的配置管理示例:
// configs/config.go
package configs
import (
"github.com/caarlos0/env/v6"
"github.com/joho/godotenv"
)
type Config struct {
App struct {
Name string `env:"APP_NAME" envDefault:"my-awesome-app"`
Version string `env:"APP_VERSION" envDefault:"1.0.0"`
Port string `env:"APP_PORT" envDefault:"3000"`
Env string `env:"APP_ENV" envDefault:"development"`
}
Database struct {
URL string `env:"DATABASE_URL,required"`
}
JWT struct {
Secret string `env:"JWT_SECRET,required"`
}
}
func New() (*Config, error) {
_ = godotenv.Load() // 加载 .env 文件(可选)
cfg := &Config{}
if err := env.Parse(cfg); err != nil {
return nil, err
}
return cfg, nil
}
优势特性
- 生产就绪:包含日志、监控、健康检查等生产环境必备功能
- 模块化设计:清晰的代码组织结构
- 文档支持:集成 Swagger/OpenAPI
- 测试友好:包含测试示例和工具
- 数据库支持:内置 PostgreSQL、MySQL、SQLite 等数据库集成
- 认证授权:JWT 认证开箱即用
- 前端集成:可选 Vue/React 前端模板
create-go-app 极大简化了 Go 全栈项目的初始化过程,让开发者可以专注于业务逻辑而非基础设施搭建。