一键生成生产级 Go 应用:Create Go App CLI (cgapp) 使用手册

Create Go App CLI(简称 cgapp)是一个强大的命令行工具,旨在帮助开发者快速生成生产级的 Go 应用程序。通过 cgapp,你可以轻松创建包含前端、后端以及数据库集成的完整项目结构,极大地简化了项目的初始化过程。

安装

首先,你需要确保已经安装了 Go 环境。然后,你可以通过以下命令安装 cgapp

go install github.com/create-go-app/cli/v4/cmd/cgapp@latest

现在macOS系统还支持brew安装

# Tap a new formula:
brew tap create-go-app/tap

# Installation:
brew install create-go-app/tap/cgapp

基本使用

1. 创建新项目

使用 cgapp 创建一个新项目非常简单。建一个空目录,然后进入目录,运行以下命令:

cgapp create

在运行过程中,cgapp 会提示你选择项目模板、前端框架、后端框架以及数据库类型。你可以根据自己的需求进行选择。

demo.gif

2. 项目结构

cgapp 生成的项目结构通常如下:

myapp/
├── backend/
│   ├── cmd/
│   ├── internal/
│   ├── pkg/
│   ├── go.mod
│   └── go.sum
├── frontend/
│   ├── public/
│   ├── src/
│   ├── package.json
│   └── ...
├── docker-compose.yml
├── .env
└── README.md
  • backend/:包含 Go 后端代码。
  • frontend/:包含前端代码(如 React、Vue 等)。
  • docker-compose.yml:用于启动项目所需的 Docker 容器。
  • .env:环境变量配置文件。

3. 启动项目

在后台目录下,运行以下命令启动项目:

go run main.go

当然也可以直接在根目录下用docker折腾

docker-compose up

这将启动后端服务、前端服务以及数据库服务(如果配置了数据库)。

4. 项目部署

cgapp deploy [OPTION]

deploy.gif


高级功能

1. 自定义模板

cgapp 支持自定义项目模板。你可以通过以下命令创建一个自定义模板:

cgapp template create my-template

然后,你可以编辑 my-template 目录中的文件,以满足你的特定需求。

2. 插件系统

cgapp 还支持插件系统,允许你在项目创建过程中添加额外的功能。例如,你可以添加一个插件来集成 Swagger API 文档:

cgapp plugin add swagger

3. 环境变量管理

cgapp 生成的项目包含一个 .env 文件,用于管理环境变量。你可以通过编辑该文件来配置数据库连接、API 密钥等。

技术要点

1. Go 模块管理

cgapp 生成的项目使用 Go 模块进行依赖管理。你可以在 backend/go.mod 文件中添加或更新依赖。

2. Docker 集成

cgapp 通过 docker-compose.yml 文件集成 Docker,使得项目可以在任何环境中轻松部署。

3. 前端框架选择

cgapp 支持多种前端框架,如 React、Vue、Angular 等。你可以根据项目需求选择合适的前端框架。

涉及的难点

1. 模板定制

虽然 cgapp 提供了丰富的模板选择,但在某些情况下,你可能需要定制模板以满足特定需求。这需要你对 Go 模板引擎有一定的了解。

2. 插件开发

如果你需要开发自定义插件,你需要熟悉 cgapp 的插件系统架构,并能够编写符合规范的插件代码。

3. 环境配置

在多环境(开发、测试、生产)中,环境变量的管理可能会变得复杂。你需要确保 .env 文件中的配置在不同环境中都能正确加载。

项目开源地址: https://github.com/create-go-app/cli

标签: Go

相关文章

Go并发编程与调度器及并发模式详解

Go语言以其简洁的语法和强大的并发能力,成为现代网络编程和微服务架构的热门选择。本文将深入探讨Go的并发编程模型,调度器的工作机制,以及多种并发模式的实现和应用,帮助开发者更好地理解并发编程的设...

Go语言中sync.Pool详解

sync.Pool 是 Go 语言标准库中的一个数据结构,用于提供高效的对象池。它的主要作用是缓存临时对象,以减少内存分配和垃圾回收的开销。sync.Pool 特别适合用于存储短生命周期的对象,...

Go 中的并发 Map:使用sync.Map及其他实现方法

在 Go 语言中,并发编程是一个核心特性,能够高效地处理多个 goroutine 的并发执行。为了安全地在多个 goroutine 中共享数据,Go 提供了多种同步机制,其中之一就是线程安全的 ...

Go语言中的单例模式及其实现sync.Once

在软件开发中,单例模式是一种确保一个类只有一个实例的设计模式。在 Go 语言中,sync.Once 是实现单例模式的强大工具,它确保某个操作只被执行一次,适合在多线程环境中使用。本篇文章将详细介...

详解Go条件变量cond的使用

在 Go 语言中,条件变量(sync.Cond)是一种用于实现线程间同步的工具。它允许一个或多个 goroutine 等待某个条件的发生。条件变量通常与互斥锁(sync.Mutex)结合使用,以...

Go语言任务编排好帮手WaitGroup

在并发编程中,任务的协调与管理至关重要。在Go语言中,sync.WaitGroup是一个非常实用的工具,能够帮助我们等待一组任务完成。本文将详细讲解WaitGroup的使用方法、实现原理、使用陷...

Go 语言中的读写锁RWMutex详解

在现代并发编程中,如何高效、安全地管理共享资源是一项重要的挑战。Go 语言的 sync 包提供了多种同步原语,其中 RWMutex(读写锁)特别适合于读多写少的场景。本文将深入探讨 RWMute...

图片Base64编码

CSR生成

图片无损放大

图片占位符

Excel拆分文件