从零开始基于go-zero
搭建go web项目实战-01项目初始化
简介
导语
Go 是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言,go语言的特点:
- 语法简洁
- Go语言简单易学,学习曲线平缓
- 代码风格统一
- 执行性能好
- 开发效率高
- 等等…
在Go语言中,有很多高性能的web框架:gin、beego、iris等。作为后起之秀,近年来,go-zero 框架因为其高效、灵活、易用等特点,在行业中被广泛应用和认可。本系列文章前期会从go-zero入门到实战从零开始搭建开发环境,项目目录结构,代码编写,需求开发等进行详细的介绍,后续会从零开始编写开源项目treasure-box
。
- 项目地址1:
https://gitee.com/li_zheng/treasure-box
- 项目地址1:
https://github.com/
treasure-box介绍
treasure-box 构建一个在线的开源的工作台|工具箱集合,整合日常开发工具,生产效率、便民生活、图像处理、休闲娱乐等。 支持自定义插件,自定义工作台,即时提醒等功能,成为你生产生活的瑞士军刀。
共建开源插件市场,丰富应用,整个项目从零开始,不断完善,前后端代码开源免费。
技术栈介绍
不断完善中…
- 后端
- go 1.19
- go-zero v1.5.3 微服务高性能弹性框架
- golang-jwt JWT 认证
- go-redis
- etcd
- gorm
- grpc、protobuf
- logx 和 logc 日志处理
- spf13 cobra 命令行工具
- 消息队列
- 加解密、限流、指标统计、负载监控等
- 数据库
- mysql
- 前端
- VUE3、Pinia、Ant design 等
- 微信小程序
- 运维&监控
- Docker
- K8s
- Prometheus
项目初始化
环境准备
- golang 安装 本人1.19环境
- goctl 安装,goctl 是 go-zero 的内置脚手架,是提升开发效率的一大利器,可以一键生成代码、文档、部署 k8s yaml、dockerfile 等。
go install github.com/zeromicro/go-zero/tools/goctl@latest
如果命令无法使用,查看gopath bin文件夹是否在path环境变量里
- protoc 安装 可选,不使用GRP可以暂时不安装
DEMO项目生成
- 使用
goctl
命令生成示例项目,注意名称不能使用中划线
goctl api new service_name
├─etc // 配置文件
└─internal // 逻辑代码
├─config // 配置结构体
├─handler // 路由信息和mvc层
├─logic // 业务逻辑处理
├─svc // 服务上下文
└─types // 结构体文件
- 运行:
go mod tidy
下载依赖包 - 运行实例项目:
go run servicename.go
调整目录结构
goctl 生成的demo项目目录结构可能不太适合我们使用,可以对目录结构进行调整,本项目调整如下。
源码地址:源码仓库地址 https://gitee.com/li_zheng/treasure-box
下一章内容
1、集成JWT,并实现简单的基于内存的用户名密码登录生成token
2、集成cobra命令行工具:版本查看,服务启动