GO 的 Web 开发系列(二)—— Web 项目的技术框架选择和项目搭建

这篇具有很好参考价值的文章主要介绍了GO 的 Web 开发系列(二)—— Web 项目的技术框架选择和项目搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Web 系统搭建第一步,选择技术框架,完成 Hello World

小玖用的 Go 版本是 1.21.6

介绍项目的技术选型个结构,不包括代码。

全文链接:https://blog.nineya.com/archives/149.html

一、技术框架选择

Web 框架: github.com/gin-gonic/gin v1.9.1

调研了 Go 开发者一圈,给小玖推荐这个框架的人最多 :tushe:

主要优点是轻量容易定制。

ORM 框架: xorm.io/xorm v1.3.6

最初小玖选的 gorm,因为网上的评价一致是:gorm 是国人开发,用户更多,文档更完善,更简单好用;xorm 的优点只是性能好点。

但是后面查问题时发现,gorm 网上相关的资料也不是那么多,所以改为了使用 xorm
(搜索 gorm 的问题,出来了很多 xorm 的相关回答)

主要是这个框架自带缓存功能,想偷懒一下~

配置文件处理工具: github.com/spf13/viper v1.18.2

这个工具可以同时处理 yamljson 和命令行参数等多种配置方式,所以选择了它。

以下这些工具包,根据网上使用人数,以及功能是否完善、丰富做的选择。

日志框架: go.uber.org/zap v1.26.0

BCrypt 生成工具: golang.org/x/crypto v0.18.0

JWT 工具: github.com/dgrijalva/jwt-go v3.2.0+incompatible

Redis 连接工具: github.com/go-redis/redis/v8 v8.11.5

MySQL 连接工具: github.com/go-sql-driver/mysql v1.7.0

UUID 生成工具: github.com/google/uuid v1.4.0

验证码生成工具: github.com/mojocn/base64Captcha v1.3.6

内存缓存工具: github.com/patrickmn/go-cache v2.1.0+incompatible

在项目新建完成后,目录下会生成一个 go.mod 文件,用于管理依赖包,在该文件中输入以下内容:

module aurora

go 1.21.6

require (
	github.com/dgrijalva/jwt-go v3.2.0+incompatible
	github.com/gin-gonic/gin v1.9.1
	github.com/go-redis/redis/v8 v8.11.5
	github.com/go-sql-driver/mysql v1.7.0
	github.com/google/uuid v1.4.0
	github.com/mojocn/base64Captcha v1.3.6
	github.com/patrickmn/go-cache v2.1.0+incompatible
	github.com/spf13/viper v1.18.2
	go.uber.org/zap v1.26.0
	golang.org/x/crypto v0.18.0
	xorm.io/xorm v1.3.6
)

二、项目包结构设计

一般而言 main.go 文件是 Go 项目的启动文件,放在项目根目录,其他文件自己根据项目情况新建目录存放就可以了。

但是建议还是将源程序用一个目录统一存放,避免目录结构混乱。这个统一存放源文件的目录类似 javamian 目录。

需要注意不同的包(目录)的源程序文件不能循环引用。

小玖参考了一些其他项目的包设计,然后根据功能需要,设计的项目包目录结构如下:

internal:项目源码根目录
|- application:业务逻辑相关的程序包
|--- model:模型层源文件包目录,包含了模型结构体
|--- param:web接口出入参的结构体源文件包目录
|--- router:web路由接口文件包目录(可以理解为controller),里面根据业务功能划分子包
|--- service:服务层源文件包目录,里面根据业务功能划分子包
|- config:配置文件相关
|- global:这个包用于存放一些公共逻辑和变量
|- initialize:项目初始化各种框架的包,比如xorm、redis、gin
|--- middleware:gin中间件的包
|- utils:放工具方法的包
resource:存放静态文件,比如vue管理后台源码
test:测试程序文件所在的包
application.yaml:程序的配置文件
go.mod:依赖管理文件
main.go:程序入口

这样在目录结构上将静态文件和 Go 源文件区分开了,各个功能模块的逻辑都较为清晰,小玖用的算是比较舒服,仅供参考。

在确定了包结构后,就可以根据各个模块的职责往里面添代码,从网上找找这些框架的配置教程即可。

一些比较核心的逻辑小玖会在后面的章节中继续介绍。文章来源地址https://www.toymoban.com/news/detail-823615.html

到了这里,关于GO 的 Web 开发系列(二)—— Web 项目的技术框架选择和项目搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用

    博主简介: 努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标: 写好专栏的每一篇文章 全称: “万维网”(World Wide Web) 本质: 系统(基于互联网).

    2024年02月03日
    浏览(40)
  • GO 的 Web 开发系列(八)—— Gin 自定义 Html 渲染实现多租户的模板设计

    本文主要解决在多租户场景下的模板渲染问题。 正常情况下 Gin 配置的所有模板都属于同一个模板组合,相同名称的模板将相互覆盖。在未通过 define 指定模板名称时,同名模板文件也将相互覆盖。自定义函数中也无法区分租户,这将非常不方便我们进行多租户的模板渲染处

    2024年04月22日
    浏览(27)
  • 用go设计开发一个自己的轻量级登录库/框架吧(项目维护篇)

    本篇将开始讲讲开发库/框架的最开始阶段,也就是搭建一个项目 源码:weloe/token-go: a light login library (github.com) 项目结构,不是上一篇所说的代码架构,而是分包,明确的分包更有助于我们的开发。本框架分包如下 我们选择使用GitHub进行代码托管,同时也使用GitHub Actions进行

    2024年02月03日
    浏览(29)
  • Go微服务框架及基础平台选择

    是否满足公司业务需求 维护状态 系统功能完整性 星标数 文档的完整性 安全性 项目简介 :Istio是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。使用istio可以很简单的创建具有负载均衡、服务间认证、监控等功能的服务网络,而不需要对服务的代码进行任何修改。

    2024年02月04日
    浏览(25)
  • Vue系列第五篇:Vue2(Element UI) + Go(gin框架) + nginx开发登录页面及其校验登录功能

       本篇使用Vue2开发前端,Go语言开发服务端,使用nginx代理部署实现登录页面及其校验功能。 目录 1.部署结构 2.Vue2前端 2.1代码结构 2.1源码 3.Go后台服务 3.2代码结构 3.2 源码 3.3单测效果 4.nginx 5.运行效果 6.问题总结   index.html !DOCTYPE html html   head     meta charset=\\\"utf-8\\\"     m

    2024年02月15日
    浏览(40)
  • 从0到1开发go-tcp框架【1-搭建server、封装连接与业务绑定、实现基础Router、抽取全局配置文件】

    本期主要完成对Server的搭建、封装连接与业务绑定、实现基础Router(处理业务的部分)、抽取框架的全局配置文件 从配置文件中读取数据(服务器监听端口、监听IP等),通过自定义Router完成具体业务操作 第一版最终项目结构: 1.1 编写server端 编写iserver.go,用于定义server的

    2024年02月06日
    浏览(51)
  • Go语言五大主流web框架

    1. Gin (69.7K) 项目简介:Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API,但性能比 Martini 快 40 倍。 仓库地址: https://github.com/gin-gonic/gin https://github.com/gin-gonic/gin 官方文档地址: 文档 | Gin Web Framework Gin 是什么?Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架

    2024年02月11日
    浏览(29)
  • Go语言web框架——Gin

    Gin是一个go语言写的Web框架 客户机通过TCP/IP协议建立到服务器的TCP连接 客户端向服务器发送HTTP协议请求 Request GET /url ,请求服务器里的资源文档 服务器向客户机发送HTTP协议应答Response,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理

    2023年04月14日
    浏览(67)
  • Go语言Web框架Gin常见用法

    Gin是目前Go语言最为常用的Web框架,日常工作中也少不了使用此框架,编写此使用总结文档以备后用。 此文档参考官方文档编写,仅用于自我学习总结和参考。 我一直认为编写文档的意义一方面是给其他人提供了些许帮助,另一方面则是让自己加深了对知识的理解并为自己提

    2024年02月03日
    浏览(35)
  • Go -【gin】框架搭建基本使用

    Gin是一个快速的Golang web框架,它使用了httprouter来处理路由和速度,而不是使用内置的Go路由。以下是Gin框架的搭建和使用: 这将从Gin GitHub仓库中安装最新版本的Gin框架。 在搭建一个Gin应用程序之前,让我们了解一下Gin的基本架构: Router :它是Gin应用程序的核心部分,它接

    2024年02月16日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包