go有哪些快速開發的web框架?

主要考慮的是開發速度,適合小項目的


beego 國產很成熟

Martini 很成熟

Macaron 類似 Martini,更自由

gin 用了都說好

[鳥窩](誰是最快的Go Web框架) 有一篇 goweb 框架性能測試的報告可以看看。


推薦五款開快速開發的Web框架,希望能夠幫助題主,供大家一起交流學習。

1. 項目名稱:基於 Go 的 Web 框架 Faygo

項目簡介:Faygo 是一款快速、簡潔的 Go Web 框架,可用極少的代碼開發出高性能的 Web 應用程序(尤其是API介面)。只需定義 struct Handler,Faygo 就能自動綁定、驗證請求參數並生成在線API文檔。

項目地址:https://git.oschina.net/henrylee/faygo

2. 項目名稱:基於 Go 的 Web 開發框架 essgo

項目簡介:essgo 是一款 Go 語言開發的簡單、穩定、高效、靈活的 web 開發框架。它的項目組織形式經過精心設計,實現前後端分離、系統與業務分離,完美兼容 MVC 與 MVVC 等多種開發模式,非常利於企業級應用與 API 介面的開發。當然,最值得關注的是它突破性支持運行時路由重建,開發者可在 Admin 後台輕鬆配置路由,並實現啟用/禁用模塊或操作、添加/移除中間件等!同時,它以 ApiHandler 與 ApiMiddleware 為項目基本組成單元,可實現編譯期或運行時的自由搭配組合,也令開發變得更加靈活富有趣味性。

項目地址:https://git.oschina.net/henrylee/lessgo

3. 項目名稱:模塊化設計的 Go Web 框架 Macaron

項目簡介:Macaron 是一個具有高生產力和模塊化設計的 Go Web 框架。框架秉承了 Martini 的基本思想,並在此基礎上做出高級擴展。

項目地址:https://git.oschina.net/Unknown/Macaron

4. 項目名稱:基於Go 的輕量級 Web 框架 GoInk

項目簡介:HxGo 是基於我以往的 php 開發經驗編寫的 Go Web 框架。力求簡單直接,符合大眾編寫習慣,同時性能優良。 HxGo 基於 MVC 的結構模式,實現 REST 支持的自動路由分發,簡化 HTTP 請求和視圖操作。同時,HxGo 提供簡易直接的數據訪問層,高效直接操作資料庫內容。

項目地址:https://git.oschina.net/fuxiaohei/GoInk

5. 項目名稱:簡單高效的 Go web 開發框架 Baa

項目簡介:Baa 是一個簡單高效的 Go web 開發框架。主要有路由、中間件,依賴注入和HTTP上下文構成。Baa 不使用 反射和正則,沒有魔法的實現。

特性:

  • 支持靜態路由、參數路由、組路由(前綴路由/命名空間)和路由命名;
  • 路由支持鏈式操作;
  • 路由支持文件/目錄服務;
  • 中間件支持鏈式操作;
  • 支持依賴注入*;
  • 支持 JSON/JSONP/XML/HTML 格式輸出;
  • 統一的 HTTP 錯誤處理;
  • 統一的日誌處理;
  • 支持任意更換模板引擎(實現 baa.Renderer 介面即可)。

項目地址:https://git.oschina.net/go-baa/baa

碼雲 - 開源中國代碼託管平台

歡迎關注碼雲,一個專為開發者提供穩定、高效、安全的雲端軟體開發協作平台,無論是個人、團隊、或是企業,都能夠用碼雲實現代碼託管、項目管理、協作開發,更有代碼質量分析、項目演示等豐富功能,歡迎放碼過來。

碼雲知乎機構賬號的「放碼雲間」文章專題為你推薦優質的開源項目資訊,展現最新的行業動態。


選型中,做了個小統計,github上的數據,一定程度上可以作為選擇參考吧。

下次有空搞個性能壓測,再來更新結果。

其中gorilla十分組件化,所以只選取了其中數值最高的mux組件。


go的精髓是「組合」

因此,其實這是一個不太成立的問題。

上面說的gin, echo等都是解決某部分問題。

沒有任何一個框架能解決你各種問題,比如所謂幾大模塊的beego其實用起來非常變扭。

你可以用自己喜歡的方式把自己要解決的問題的各個部分都找到合適的go lib, 然後把他們組合起來,這是讓你自己最舒服也是能應對一切變化的方式。


推薦下 @asta謝 的 Beego 框架,入門簡單,文檔齊全(中文),功能強大


講真 小項目的話我覺得用go做web開發的話,不如不用框架...


codegangsta/negilla + gorilla/mux

我主要針對rest api, 框架提供一個職責鏈和路由


現在 echo 最火。

一方面是特性,一方面是維護的勤。

幾乎所有golang框架都是一個人開發的,熱度退了就不再維護了。


截止至2017年底,還是推薦ECHO。

這一年改進了很多,第四季度不是那麼活躍了,但也相對很完善了。


Gorilla比較輕: Gorilla, the golang web toolkit

gocraft/web: gocraft/web · GitHub

Revel: The Revel Web Framework for Go


推薦使用 Faygo 框架。用戶只需要定義一個struct Handler,就能自動綁定、驗證請求參數並生成在線API文檔。因此,Faygo 簡單易用,代碼量少,開發效率高,非常合適開發API介面。並且 Faygo 的Handler與Middleware完全相同,都是實現Handler,只是概念層面的區分。這在眾Go Web框架之中實屬首個!

GitHub - henrylee2cn/faygo: Faygo is a Golang Web framework that handler is middleware, supports intelligent parameter mapping and validation, and automates API documentation.


beego, 公司里所有的web項目都是基於beego開發的, 夠用

------一年後補充(2016/12):

目前開發項目不用beego整個框架了,而是用其組件,如log以及orm

所以beego的組件化還是做得十分不錯,其實beego可以向PHP里的symfony方向發展,做web組件而不要作webframework


這裡有大家對Go Web框架的投票,可以參考下

Go Web框架你中意哪一款? - Golang中文社區 - 和地鼠們分享你的知識、經驗和見解


用了gin ,使用起來很簡潔,原來沒用框架的,看下很容易就適應了,常用的功能都封裝了下,性能也特彆強。GitHub上 12156個start,也比其他框架多和beego相差不大。

後來看了下beego。覺得做得太多了,很多東西要按新的框架來搞。之前看的時候還沒法編譯其他平台的包。部署是直接將代碼推上去,現場編譯的。感覺這個方式不太好,沒有利用好go的優勢。


目前用beego的說,go還真的沒有一個像java生態的Spring一樣普遍使用的東東。


inu1255/green

  1. 參數注入,大大減少代碼量

2. 自動生成swagger文檔

3. 內置實現了常用介面

// @desc 你好世界
func hello() (string,error) {
return "hello world",nil
}

type Math struct{
}
func (*Math)Add(a,b int) (int,error){
return a+b,nil
}
func (*Math)Sub(a,b int) (int,error){
return a-b,nil
}

func main() {
app := gev.New()
maker := gev.NewRouteMaker()

maker.AddRoute(hello)
maker.AddRoute(new(Math))

maker.RouteTo(app)
app.Swagger("/api")
app.Run(":8080")
}

效果如下


hxpdeihgu/goxp

這個像php框架自動路由


推薦閱讀:

在軟體開發中,追求新的技術意義大嗎?
尾遞歸究竟是好是壞?
Google MapReduce中的map和reduce與函數式編程中的map,reduce有何異同?
GitHub 上出眾的程序員有哪些?
non-trivial 怎樣翻譯?

TAG:Web開發 | 編程 | Web開發框架 | Go語言 |