案例 template-vue3-gin-fullstack:Vue3+Go Gin前后端分离全栈项目模板,开箱即用

2026-05-09 10:27:01 +0800 CST views 4

template-vue3-gin-fullstack:Vue3 + Go Gin 前后端分离全栈项目模板

GitHub: https://github.com/wujichen252-crypto/template-vue3-gin-fullstack
技术栈: Vue 3 + Go Gin + PostgreSQL + Redis + TypeScript + Tailwind CSS
作者: 码农先森
标签: 全栈模板 / Vue3 / Go Gin / 前后端分离 / TypeScript / 项目架构


引言

前后端分离的全栈项目,每次新开都要从头搭架子:前端配路由、状态管理、API 封装;后端配分层、写 Controller、Service、Repository……这些事情做多了,真的很烦。

有没有一个开箱即用的全栈模板,能直接跑起来?

template-vue3-gin-fullstack 就是来解决这个问题的——基于 Vue3 + Go Gin 实现,前端后端目录分离,技术栈主流,分层清晰,CI/CD 配好,直接 clone 就能开始写业务代码。


一、技术栈概览

前端技术栈

技术版本用途
Vue 3.43.4+渐进式前端框架
TypeScript 55+类型安全
Vite 55+极速构建工具
Pinia 22+状态管理
Vue Router 44+路由管理
Tailwind CSS 33+原子化 CSS
Element Plus-UI 组件库
Axios-HTTP 客户端

后端技术栈

技术版本用途
Go 1.221.22+后端主力语言
Gin 1.91.9+高性能 Web 框架
GORM 1.251.25+ORM 框架
PostgreSQL14+关系型数据库
Redis6+缓存 / Session
JWTgolang-jwt/jwt/v5认证
Zap-高性能日志

二、目录结构

template-vue3-gin-fullstack/
├── frontend/                 # Vue3 前端
│   ├── src/
│   │   ├── api/              # API 接口封装
│   │   ├── components/        # 通用组件
│   │   ├── composables/      # 组合式函数
│   │   ├── router/           # 路由配置
│   │   ├── stores/            # Pinia 状态
│   │   ├── types/             # TypeScript 类型定义
│   │   ├── utils/             # 工具函数
│   │   └── views/              # 页面组件
│   └── ...
├── backend/                  # Go 后端
│   ├── cmd/                  # 程序入口
│   ├── config/               # 配置管理
│   ├── internal/             # 内部包
│   │   ├── handler/          # 处理器层(对应 Controller)
│   │   ├── service/          # 业务逻辑层
│   │   ├── repository/       # 数据访问层
│   │   ├── model/            # 数据模型
│   │   └── middleware/       # 中间件
│   ├── pkg/                  # 公共包
│   └── ...
└── ...

分层设计

前端分层

目录职责
api/API 接口封装,统一管理请求
components/通用 UI 组件
composables/组合式函数,抽取复用逻辑
router/路由配置,权限控制
stores/Pinia 状态管理,全局状态
views/页面组件

后端分层(经典 DDD 简化版):

目录职责
handler/接收请求,参数校验,调用 Service
service/业务逻辑处理
repository/数据库操作,GORM 封装
model/数据结构定义
middleware/中间件(认证、日志、CORS)

三、快速开始(10 分钟跑起来)

前置条件

  • Node.js >= 18
  • Go >= 1.22
  • PostgreSQL >= 14
  • Redis >= 6

第一步:克隆项目

git clone https://github.com/wujichen252-crypto/template-vue3-gin-fullstack
cd template-vue3-gin-fullstack

第二步:启动后端

cd backend

cp .env.example .env
# 编辑 .env,配置数据库和 Redis 连接信息

go mod tidy
go run cmd/main.go

后端启动后运行于 http://localhost:8080

第三步:启动前端

cd frontend

npm install
npm run dev

前端启动后访问 http://localhost:5173

第四步:初始化数据库

cd backend/scripts

psql -U postgres -f init_db.sql

四、环境变量配置

后端环境变量 (.env)

变量说明默认值
SERVER_PORT服务端口8080
SERVER_MODE运行模式debug
ALLOW_ORIGINS允许的跨域来源http://localhost:5173,http://localhost:3000
DB_HOST数据库地址localhost
DB_PORT数据库端口5432
DB_USER数据库用户postgres
DB_PASSWORD数据库密码-
DB_NAME数据库名template_db
REDIS_HOSTRedis 地址localhost
REDIS_PORTRedis 端口6379
JWT_SECRETJWT 密钥-
JWT_ACCESS_EXPIREAccess Token 有效期(小时)2
JWT_REFRESH_EXPIRERefresh Token 有效期(小时)168

前端环境变量

变量说明
VITE_API_BASE_URLAPI 基础路径

五、API 接口一览

认证接口

方法路径说明需要认证
POST/api/v1/auth/register注册
POST/api/v1/auth/login登录
GET/api/v1/auth/userinfo获取用户信息
POST/api/v1/auth/refresh刷新 Token

JWT 认证流程

登录 → 拿到 Access Token + Refresh Token
  ↓
请求时 Header 带上 Authorization: Bearer <access_token>
  ↓
Token 过期 → 用 Refresh Token 换新 Token

六、CI/CD 自动化部署

工作流概览

工作流文件触发条件说明
CI Check.github/workflows/ci-check.ymlPush/PR 到 main/develop代码质量检查
Deploy.github/workflows/deploy.ymlPush 到 main 或手动触发构建并部署到服务器

部署配置步骤(5 分钟完成)

第一步:配置 GitHub Secrets

进入仓库 Settings → Secrets and variables → Actions → Secrets,添加:

名称必填获取方式
SSH_PRIVATE_KEY服务器执行 cat ~/.ssh/id_rsa,粘贴全文

第二步:配置 GitHub Variables

进入 Settings → Secrets and variables → Actions → Variables,添加:

名称必填示例说明
DEPLOY_SERVER_HOST123.456.78.90服务器公网 IP
DEPLOY_FRONTEND_PATH/www/wwwroot/template-app前端部署目录
DEPLOY_BACKEND_PATH/www/template-app后端二进制存放目录
DEPLOY_SERVER_USERrootSSH 用户名
DEPLOY_SERVER_PORT22SSH 端口
DEPLOY_SERVICE_NAMEtemplate-appsystemd 服务名
DEPLOY_NOTIFY_WEBHOOK钉钉/飞书 Webhook部署成功通知

第三步:服务器准备

# 生成 SSH 密钥对
ssh-keygen -t rsa -b 4096 -C "github-actions" -f ~/.ssh/github_actions

# 添加公钥到 authorized_keys
cat ~/.ssh/github_actions.pub >> ~/.ssh/authorized_keys

# 把私钥填到 GitHub Secrets:SSH_PRIVATE_KEY
cat ~/.ssh/github_actions

创建 systemd 服务文件 /etc/systemd/system/template-app.service

[Unit]
Description=Template App API
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/www/template-app
ExecStart=/www/template-app/app
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable template-app

第四步:触发部署

git push origin main

然后前往 GitHub → Actions 查看部署状态。

一键配置脚本

不想手动配?可以运行项目提供的配置向导脚本:

bash scripts/setup-ci.sh

七、构建与部署

前端构建

cd frontend
npm run build

构建产物在 frontend/dist/ 目录。

后端构建

cd backend

# Linux 交叉编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app-server ./cmd/main.go

# Windows
go build -o app-server.exe ./cmd/main.go

Docker 部署

cd backend

docker build -t template-backend .
docker run -p 8080:8080 --env-file .env template-backend

Nginx 配置

server {
    listen 80;
    server_name your-domain.com;

    location / {
        root /path/to/frontend/dist;
        try_files $uri $uri/ /index.html;
    }

    location /api {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

八、Swagger API 文档

后端集成了 Swagger UI,开发模式下直接访问:

http://localhost:8080/swagger/index.html

所有 API 接口都有完整文档,不需要额外 Postman 或 Insomnia。


九、多环境支持

Deploy 工作流支持 workflow_dispatch 手动触发,可选择部署环境:

  1. 进入 GitHub → Actions → Deploy
  2. 点击 "Run workflow"
  3. 选择环境(production / staging

十、适合谁用

推荐场景

人群收益
快速启动 MVP不想从零搭架子,直接 clone 开写
学习全栈开发目录结构清晰,分层合理,适合学习参考
团队内部工具前后端分离架构,职责清晰,便于协作
面试项目技术栈主流,CI/CD 配好,面试加分

项目亮点

亮点说明
分层清晰Handler → Service → Repository,后端职责分明
TypeScript 类型安全前端全程类型检查,减少运行时错误
开箱即用的认证JWT + Refresh Token,不用自己写
CI/CD 配好GitHub Actions 直接跑,省去部署配置
Swagger 文档接口文档自动生成,维护成本低
多环境支持production / staging 一键切换

十一、和同类项目对比

模板前端后端ORMCI/CDSwagger
template-vue3-gin-fullstackVue3 + TSGo GinGORM✅ GitHub Actions
其他 Vue + Go 模板Vue3Go可能没有
Rails / Laravel内置需配置需配置

十二、总结

一句话评价

一个开箱即用的 Vue3 + Go Gin 全栈模板,前端后端分离,分层清晰,JWT 认证、CI/CD 全部配好,clone 下来直接写业务代码。

使用建议

  1. 首次使用:按照快速开始文档,10 分钟跑起来
  2. 定制开发:在 backend/internal/ 下写业务逻辑,前端 views/ 下写页面
  3. 部署上线:按照 CI/CD 配置文档,push 代码自动部署
  4. 持续迭代:使用多环境支持,开发/测试/生产分离

GitHub: https://github.com/wujichen252-crypto/template-vue3-gin-fullstack


本文首发于「程序员茄子」博客,原文链接:https://chenxutan.com

推荐文章

Go 1.23 中的新包:unique
2024-11-18 12:32:57 +0800 CST
为什么大厂也无法避免写出Bug?
2024-11-19 10:03:23 +0800 CST
HTML + CSS 实现微信钱包界面
2024-11-18 14:59:25 +0800 CST
内网穿透技术详解与工具对比
2025-04-01 22:12:02 +0800 CST
Linux查看系统配置常用命令
2024-11-17 18:20:42 +0800 CST
开发外贸客户的推荐网站
2024-11-17 04:44:05 +0800 CST
使用xshell上传和下载文件
2024-11-18 12:55:11 +0800 CST
浏览器自动播放策略
2024-11-19 08:54:41 +0800 CST
使用 Go Embed
2024-11-19 02:54:20 +0800 CST
程序员茄子在线接单