最近在學 Golang(Go語言),也在 Github 上找了一些基于 Golang 的優秀開源框架,在這里分享給大家,
一、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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259985.html
標籤:其他
上一篇:【網路安全】資料鏈路層和交換機
下一篇:解決執行緒的安全問題
