golang快速搭建流行框架项目的插件库go-blueprint的使用

Golang快速搭建流行框架项目的插件库go-blueprint的使用

logo

介绍终极Golang蓝图库

Go Blueprint是一个CLI工具,可以让用户无缝地创建一个具有相应结构的Go项目。它还提供了与更流行的Go框架集成的选项(并且随着新功能的增加,列表还在不断增长)!

为什么要使用它?

  • 易于设置和安装
  • 已经建立了完整的Go结构
  • 设置Go HTTP服务器(或使用Fiber的Fasthttp)
  • 与流行框架集成
  • 专注于应用程序的实际代码

安装

Go安装

go install github.com/melkeydev/go-blueprint@latest

这将安装一个Go二进制文件,它会自动绑定到你的$GOPATH

如果你使用Zsh,你需要手动将其添加到~/.zshrc中。

GOPATH=$HOME/go PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

别忘了更新

source ~/.zshrc

NPM安装

npm install -g go-blueprint

Homebrew安装

brew install go-blueprint

然后在新终端中运行:

go-blueprint create

你也可以使用提供的标志来设置项目,而无需与UI交互。

go-blueprint create --name my-project --framework gin --driver postgres --git commit

查看go-blueprint create -h获取所有选项和简写。

支持的框架

  • Chi
  • Gin
  • Fiber
  • HttpRouter
  • Gorilla/mux
  • Echo

数据库支持

Go Blueprint现在提供了增强的数据库支持,允许你在项目设置期间选择你喜欢的数据库驱动。使用--driver-d标志来指定你想集成到项目中的数据库驱动。

支持的数据库驱动

从各种支持的数据库驱动中选择:

  • Mysql
  • Postgres
  • Sqlite
  • Mongo
  • Redis
  • ScyllaDB GoCQL

高级功能

Blueprint专注于尽可能简约。也就是说,我们希望能够在不影响整体体验的情况下添加其他人可能想要的其他功能。

你现在可以在运行create命令时使用--advanced标志来访问以下功能。这是一个多选项提示;可以同时使用一个或多个功能:

  • 使用Templ的HTMX支持
  • 使用Github Actions的CI/CD工作流设置
  • Websocket设置websocket端点
  • Tailwind css框架
  • Go项目的Docker配置
  • 用TypeScript编写的React前端,包括向后端发送示例fetch请求

注意:选择Tailwind选项将自动选择HTMX,除非明确选择React

Blueprint UI

Blueprint UI是一个Web应用程序,允许你为CLI创建命令并预览项目的结构。你将能够看到在执行命令时将创建的目录和文件。

使用示例

以下是一个设置具有特定数据库驱动的项目的示例:

go-blueprint create --name my-project --framework gin --driver postgres --git commit

Starter Image

高级功能可通过–advanced标志访问

go-blueprint create --advanced

高级功能可以使用--feature标志与--advanced标志一起启用。

HTMX:

go-blueprint create --advanced --feature htmx

CI/CD工作流:

go-blueprint create --advanced --feature githubaction

Websocket:

go-blueprint create --advanced --feature websocket

Tailwind:

go-blueprint create --advanced --feature tailwind

Docker:

go-blueprint create --advanced --feature docker

React:

go-blueprint create --advanced --feature react

或者一次启用所有功能:

go-blueprint create --name my-project --framework chi --driver mysql --advanced --feature htmx --feature githubaction --feature websocket --feature tailwind --feature docker --git commit --feature react

Advanced Options

GitHub统计

Repobeats analytics image

许可证

根据MIT许可证授权


更多关于golang快速搭建流行框架项目的插件库go-blueprint的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang快速搭建流行框架项目的插件库go-blueprint的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Go-Blueprint 快速搭建流行框架项目

Go-Blueprint 是一个用于快速搭建 Golang 项目的脚手架工具,它可以帮助开发者快速初始化各种流行框架的项目结构。下面我将详细介绍如何使用 go-blueprint。

安装 Go-Blueprint

首先需要安装 go-blueprint:

go install github.com/go-blueprint/cli/cmd/bp@latest

安装完成后,可以通过 bp --help 查看可用命令。

常用命令

1. 创建新项目

bp new <project-name>

这会创建一个基础项目结构,包含:

  • main.go
  • go.mod
  • 基本目录结构

2. 添加框架支持

Go-Blueprint 支持多种流行框架,可以通过以下命令添加:

# 添加 Gin 框架
bp add gin

# 添加 Echo 框架
bp add echo

# 添加 Fiber 框架
bp add fiber

# 添加 Beego 框架
bp add beego

3. 添加数据库支持

# 添加 GORM 支持
bp add gorm

# 添加 SQLx 支持
bp add sqlx

# 添加 MongoDB 支持
bp add mongo

4. 添加认证支持

# 添加 JWT 认证
bp add jwt

示例:创建 Gin + GORM 项目

下面是一个完整的示例,展示如何创建一个包含 Gin 和 GORM 的项目:

# 创建新项目
bp new my-gin-app

# 进入项目目录
cd my-gin-app

# 添加 Gin 框架
bp add gin

# 添加 GORM 支持
bp add gorm

# 添加 JWT 认证
bp add jwt

项目结构

执行上述命令后,项目结构大致如下:

my-gin-app/
├── cmd/
│   └── server/
│       └── main.go
├── internal/
│   ├── config/
│   ├── controllers/
│   ├── models/
│   ├── routes/
│   └── utils/
├── pkg/
├── go.mod
└── go.sum

生成的代码示例

main.go

package main

import (
	"log"
	"my-gin-app/internal/config"
	"my-gin-app/internal/routes"
)

func main() {
	// 初始化配置
	cfg, err := config.Load()
	if err != nil {
		log.Fatalf("Failed to load config: %v", err)
	}

	// 初始化路由
	router := routes.Setup(cfg)

	// 启动服务器
	if err := router.Run(":" + cfg.Server.Port); err != nil {
		log.Fatalf("Failed to start server: %v", err)
	}
}

路由示例 (internal/routes/router.go)

package routes

import (
	"github.com/gin-gonic/gin"
	"my-gin-app/internal/config"
	"my-gin-app/internal/controllers"
)

func Setup(cfg *config.Config) *gin.Engine {
	router := gin.Default()

	// 健康检查路由
	router.GET("/health", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"status": "ok",
		})
	})

	// 用户路由组
	userController := controllers.NewUserController(cfg)
	userGroup := router.Group("/users")
	{
		userGroup.GET("", userController.GetUsers)
		userGroup.POST("", userController.CreateUser)
		userGroup.GET("/:id", userController.GetUserByID)
	}

	return router
}

配置示例 (internal/config/config.go)

package config

import (
	"log"
	"os"

	"github.com/spf13/viper"
)

type Config struct {
	Server struct {
		Port string `mapstructure:"port"`
	} `mapstructure:"server"`
	Database struct {
		Host     string `mapstructure:"host"`
		Port     string `mapstructure:"port"`
		User     string `mapstructure:"user"`
		Password string `mapstructure:"password"`
		Name     string `mapstructure:"name"`
	} `mapstructure:"database"`
	JWT struct {
		Secret string `mapstructure:"secret"`
	} `mapstructure:"jwt"`
}

func Load() (*Config, error) {
	viper.SetConfigName("config")
	viper.SetConfigType("yaml")
	viper.AddConfigPath(".")
	viper.AutomaticEnv()

	if err := viper.ReadInConfig(); err != nil {
		log.Printf("Error reading config file, %s", err)
	}

	var cfg Config
	if err := viper.Unmarshal(&cfg); err != nil {
		return nil, err
	}

	// 设置默认值
	if cfg.Server.Port == "" {
		cfg.Server.Port = "8080"
	}

	return &cfg, nil
}

自定义模板

Go-Blueprint 允许你自定义项目模板。你可以在项目根目录创建 .blueprint 文件夹,并在其中添加自定义模板。

优势

  1. 快速启动:几分钟内搭建完整项目结构
  2. 标准化:遵循最佳实践的项目结构
  3. 模块化:按需添加功能模块
  4. 可扩展:支持自定义模板

总结

Go-Blueprint 是一个强大的工具,可以显著减少项目初始化时间,特别适合需要快速原型开发或遵循标准化结构的团队。通过简单的命令组合,你可以快速搭建出包含各种流行框架和组件的项目基础。

回到顶部