Nadeal

您现在的位置是:首页>所属分类

所属分类

学习Golang需要了解的几个开源框架

Nadeal2022年2月10日 13:43个人博客297
Golang只是一门近似于C语言的编程语言。掌握语言的语法和技巧,远远是不够。还需要掌握或者了解一些开源框架的使用。

一、Gin 框架(45.7k star)

Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 优于 httprouter,速度提高了近 40 倍。

Gin 框架的特性:

  •     支持中间件,传入的 HTTP 请求可以由一系列中间件和最终操作来处理,例如:Logger等。
  •     JSON 验证,Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。
  •     提供路由组,更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。
  •     内置渲染,Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。
  •     错误管理方便,Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
  •     基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能,可扩展性好。

仓库地址:https://github.com/gin-gonic/gin

二、gorm 框架(22.8k star)

基于 Golang 开发的的 ORM 库。

gorm 框架的特性:

  •     全功能 ORM
  •     关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
  •     Create,Save,Update,Delete,Find 中钩子方法
  •     支持 Preload、Joins 的预加载
  •     事务,嵌套事务,Save Point,Rollback To Saved Point
  •     Context, Prepared Statement Mode, DryRun Mode
  •     批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  •     SQL 构建器,Upsert,数据库锁
  •     Optimizer/Index/Comment Hint,命名参数,子查询
  •     复合主键,索引,约束
  •     Auto Migration
  •     自定义 Logger
  •     灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
  •     每个特性都经过了测试的重重考验
  •     开发者友好

    仓库地址:https://github.com/go-gorm/gorm

三、Viper 框架(14.7k star)

Viper 是一个适用于 Go 应用程序(包括12因子应用程序)的完整配置解决方案。它旨在在应用程序中工作,并且可以处理所有类型的配置需求和格式。

Viper 框架的特性:

  •     设置默认值
  •     从JSON,TOML,YAML,HCL,envfile和Java属性配置文件中读取
  •     实时观看和重新读取配置文件(可选)
  •     从环境变量中读取
  •     从远程配置系统(etcd或Consul)中读取,并观察更改
  •     从命令行标志读取
  •     从缓冲区读取设置显式值

你可以将 Viper 视为满足您所有应用程序配置需求的注册表。

仓库地址:https://github.com/spf13/viper
四、Go-MySQL-Driver 框架(10.5k star)

Go MySQL 驱动程序是 Golang 数据库、sql 包的 MySQL 驱动程序。

Go-MySQL-Driver 框架的特性:

  •     轻巧快速
  •     本机Go实施。没有C绑定,只有纯Go
  •     通过TCP / IPv4,TCP / IPv6,Unix域套接字或自定义协议的连接
  •     自动处理断开的连接
  •     自动连接池(按数据库/ sql包)
  •     支持大于16MB的查询
  •     全面的sql.RawBytes支持
  •     准备好的语句中的智能LONG DATA处理
  •     通过文件允许列表和io.Reader支持来确保对LOAD DATA LOCAL INFILE的安全支持
  •     可选时间,时间解析
  •     可选的占位符插值

仓库地址:https://github.com/go-sql-driver/mysql
五、Go-Redis 框架(10.8k star)

用于 Golang 的类型安全的 Redis 客户端。

仓库地址:https://github.com/go-redis/redis
六、gin-swagger 框架(1.5k star)

基于 Gin 的中间件,以使用 Swagger 2.0 自动生成 RESTful API 文档。

仓库地址:https://github.com/swaggo/gin-swagger