Go新项目-为何选Gin框架?(0)

这篇具有很好参考价值的文章主要介绍了Go新项目-为何选Gin框架?(0)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Go新项目-为何选Gin框架?(0),Go,golang,gin,开发语言

先说结论:我们选型Gin框架

早在大概在2019年下旬,由于内部一个多线程上传的需求,考虑到Go协程的优势;
内部采用Gin框架编写了内部的数据上传平台BAP,采用Gin+Vue开发,但前期没考虑到工程化思维,导致代码后期维护程度变得很复杂,硬编码内容过多,重复内容过多;
项目说明:其中一半采用Gin作为Web页面API,一半做了脚本独立运行。
此次鉴于新项目的开发,准备将代码工程化思维重构。

首先考虑到业务的增长,以后需要将公司项目朝着自动化运维、微服务、集群、分布式项目的方向发展,云原生的需求,底层部署会向Docker+Kubernetes方向靠拢

目前在行的PHP为主的项目就显得不那么友好(业务代码繁杂,开发环境依赖重,资源消耗占用大等),并且其中还嵌套了Python脚本。
这催生了我们选择go语言重构及开发新项目的打算:

go语言的优势如下:

  • Go天生的自带并发调度,如协程和通道,且协程内存占用少,一个Goroutine栈空间最小2K
  • Go自带的格式统一,gofmt工具
  • Go语法的简洁,可读性强,严格语言规范
  • Go作为静态语言,编译效率高,性能相对高
  • Go跨平台的编译使用,跟操作shell命令一样的调用,部署方便,目前很多脚本都是这么来做的。
  • 丰富的内置类型,内置强大的工具
  • 内置runtime,自动垃圾回收机制

由于我们很多项目都是基于BS架构的模式,我们也不希望过重的框架,开发高性能的API服务以及后续的微服务,进行前后端分离开发模式(go+vue)
所以我们就要从go热门的几款框架中做了对比:

统计star时间:2021-12-15

  • Beego: 一个Go语言下开源的,高性能Web框架 ;
    • github:https://github.com/beego/beego, star 27.4k
  • Buffalo: 一个Go语言下快速Web开发框架 ;
    • github:https://github.com/gobuffalo/buffalo, star 6.5k
  • Echo: 一个高性能,极简的Web框架;
    • github:https://github.com/labstack/echo,21.3k
  • Gin: 一个Go语言写的HTTP Web框架。它提供了Martini风格的API并有更好的性能;
    • github:https://github.com/gin-gonic/gin, star 53.9k
  • Revel: 一个高生产率,全栈Go语言的Web框架;
    • github:https://github.com/revel/revel,star 12.5k
  • Iris: 目前发展最快的Go Web框架。提供完整的MVC功能并且面向未来;
    • github:https://github.com/kataras/iris,star 21.6k

选择Gin的几点说明:

  • 可以看到Gin的star数最多,只是一个指标,说明使用人多,然后社区人员活跃
  • 功能简单易用性强,可扩展空间大
  • 内部使用的路由是httprouter(性能非常好的路由框架).

当然这些不够,如何把轻框架即满足需求又容易扩展,还是要参考热门的开源项目,对该框架进行补充;如:Docker,Kubernetes,Hugo,awesome-go等

详细对比参考地址:https://github.com/speedwheel/awesome-go-web-frameworks/blob/master/README.md

附带一些Gin框架开发相关的辅助工具文章来源地址https://www.toymoban.com/news/detail-798221.html

  • gin-swagger:通过注释自动生成swagger api文档
  • gorm:ORM库旨在让开发人员更加友好
  • cobra:A Commander for modern Go CLI interactions(现代Go CLI交互的命令行工具集)
  • viper:Viper是Go应用程序的完整配置解决方案,toml,yaml等配置文件读取
  • jwt-go 用于生成、解析JWT token
  • aliyun-oss-go-sdk 阿里云OSS官方包,用于操作OSS(当然这块具体业务了,我们使用alisdk较多)
  • excelize 读写Excel

到了这里,关于Go新项目-为何选Gin框架?(0)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [golang gin框架] 40.Gin商城项目-微服务实战之Captcha验证码微服务

    本次内容需要 gin框架基础知识, golang微服务基础知识才能更好理解 在前面,讲解了微服务的架构等,这里,来讲解前面商城项目的 Captcha验证码 微服务 ,captcha验证码功能在前台,后端 都要用到 ,可以把它 抽离出来 ,做成微服务功能 编辑 这个验证码功能封装代码captcha.go如下: 把这个

    2024年02月16日
    浏览(39)
  • [golang gin框架] 45.Gin商城项目-微服务实战之后台Rbac微服务之角色权限关联

    角色和权限的关联关系在前面文章中有讲解,见[golang gin框架] 14.Gin 商城项目-RBAC管理之角色和权限关联,角色授权,在这里通过微服务来实现 角色对权限的授权 操作,这里要实现的有两个功能,一个是进入授权,另一个是,授权提交操作,页面如下:  这里需要在proto/rbacRole.proto中增加

    2024年02月14日
    浏览(55)
  • [golang gin框架] 26.Gin 商城项目-前台自定义商品列表模板, 商品详情数据渲染,Markdown语法使用

    当在首页分类点击进入分类商品列表页面时,可以根据后台分类中的分类模板跳转到对应的模板商品列表页面 (1).商品控制器方法Category()完善 修改controllers/frontend/productController.go中的方法Category(), 判断分类模板,如果后台没有设置,则使用默认模板 (2).模板页面案例 先来回顾一

    2024年02月01日
    浏览(52)
  • Go新项目-Go安全指南(8)

    目录 1 通用类 I. 代码实现 1.1 内存管理 1.2 文件操作 1.3 系统接口 1.4 通信安全 1.5 敏感数据保护 1.6 加密解密 1.7 正则表达式 2 后台类 I. 代码实现 1.1 输入校验 1.2 SQL操作 1.3 网络请求 1.4 服务器端渲染 1.5 Web跨域 1.6 响应输出 1.7 会话管理 1.8 访问控制 1.9 并发保护 1.1 内存管理

    2024年01月19日
    浏览(54)
  • [golang gin框架] 42.Gin商城项目-微服务实战之后台Rbac微服务角色增删改查微服务

    上一节讲解了后台Rbac微服务用户登录功能以及Gorm数据库配置单独抽离,Consul配置单独抽离,这一节讲解 后台Rbac微服务 角色 增删改查微服务 功能,Rbac微服务角色增删改查微服务和 后 台Rbac用户登录微服务 是属于 同一个Rbac微服务 的 不同子微服务功能 ,为了区分不同子微

    2024年02月15日
    浏览(39)
  • 基于go语言gin框架的web项目骨架

    节省时间与精力,更高效地打造稳定可靠的Web项目:基于Go语言和Gin框架的完善Web项目骨架。无需从零开始,直接利用这个骨架,快速搭建一个功能齐全、性能优异的Web应用。充分发挥Go语言和Gin框架的优势,轻松处理高并发、大流量的请求。构建可扩展性强、易于维护的代码

    2024年02月08日
    浏览(46)
  • [golang gin框架] 44.Gin商城项目-微服务实战之后台Rbac微服务之权限的增删改查微服务

    上一节讲解了[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联,这里讲解权限管理Rbac微服务权限的增删改查微服务 要实现权限的增删改查,就需要创建对应的模型,故在server/rbac/models下创建Access.go模型文件,参考[golang gin框架]

    2024年02月14日
    浏览(41)
  • 初始化一个Gin框架的Go-Web项目

    使用到的第三方库 gin Gin 框架 viper 配置文件管理 cors 跨域资源请求配置 gorm ORM 库 zap 日志记录 Go 语言程序的入口点 main.go 文件 使用 flag 读取配置文件路径参数,默认当前目录下 使用 viper 读取 config.ini 配置文件初始化初始数据 初始化随机数种子 初始化数据库 声明启动程序

    2024年02月09日
    浏览(52)
  • Go新项目-调研关于go项目中redis的使用场景,lua实战(7)

    参考地址 https://juejin.cn/post/7079756129433370638 https://blog.csdn.net/gaogaoshan/article/details/41039581 https://redis.io/docs/clients/go/ redis的使用场景的解释 下面一一来分析下Redis的应用场景都有哪些。 1、缓存 缓存现在几乎是所有中大型网站都在用的必杀技,合理的利用缓存不仅能够提升网站访

    2024年01月18日
    浏览(42)
  • Go新项目-配置文件的选取及区别和写法(1)

    先说结论:我们选型TOML yaml,toml,json,ini 实际业务都有用 实际栗子是:我们想要把Go的切片作为配置文件,YAML写起来比较吃力,TOML就很容易了。 配置文件是用于配置计算机程序的参数、初始化设置的文件、业务数据公共配置等。如果没有这些配置,我们的程序就会硬编码

    2024年01月18日
    浏览(48)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包