Martini、Beego、Revel 等等……
golang-china 討論組的回答:
蘇沛:
試用了一下 Martini , 感覺現在的一些第三方插件數量和質量并不是特別好,會有一些坑或者要自己寫些中間件。
總體不如另外兩個框架成熟。
我去年開始研究Go語言,不知不覺快有一年了。以前我研究php和nodejs,都是弱型別的解釋性語言。想找一個編譯型的強型別語言繼續學習,就選中了新奇的Go語言。我只關注Web方面的應用,看了很多有興趣的開源的Go Web框架,隨便吐槽一下。
Fan Yang:
剛剛開始用Beego,也就是圖它是中國人做的,有問題可能直接問作者什么的也方便些。
框架的對比。來自[Go語言的Web框架](http://fuxiaohei.me/article/20/go-web-framework.html)
我去年開始研究Go語言,不知不覺快有一年了。以前我研究php和nodejs,都是弱型別的解釋性語言。想找一個編譯型的強型別語言繼續學習,就選中了新奇的Go語言。我只關注Web方面的應用,看了很多有興趣的開源的Go Web框架,隨便吐槽一下。
## revel ##
revel 是最早的Go語言Web框架,借鑒的java和scala語言的 play框架 的很多想法。最早我看play 1.x時期在java社區似乎帶來一股全新的風氣,感覺是很有意思的事情。后來 play 2.x 轉投scala陣營,把java開發者帶入深淵,被很多人無情的吐槽。如今,play社區還是不溫不火的,國內應用也小眾。
revel 這玩意兒帶有和play一樣的毛病,舍棄了原有的標準完全自己來。revel 完全不理 Go標準庫的一套,全部是自己的概念;類似的play舍棄了servlet 3標準。結果就是,我看了半天,還是不曉得該怎么用。自帶的概念太多,是個障礙啊!
當然,revel 的案例還是有的,比如 山坡網。他的作者的博客也有很多關于revel的教程文章。
## beego ##
beego 是國內最火熱的框架吧。當初借著給他貢獻一些代碼注釋,通讀了整個的原始碼。要按我的想法,這是一個比較中型的框架。除了基礎的MVC結構外,還帶有Cache,ORM,Session等多個庫的支持。像這樣面面俱到,對開發者而言是好事。
但是面面俱到的問題是,能不能用別人的Session或者Cache呢?已經有使用xorm這個ORM庫代替beego自帶的ORM的案例。不過總會有一種錯覺:“它提供了就用它自己的吧,別的萬一出問題還不會搞”,額呵呵呵。
beego 用的人很多,檔案也很齊全(更新不太及時),社區和Q群也很活躍。因而,選擇beego是不錯的。
## martini ##
martini 是新銳的框架,概念非常不錯。不過,martini只是一個微型框架,只帶有簡單的核心,路由功能和依賴注入容器inject。因此很多東西需要自己寫,比如view,session等。而且目前也沒有看到比較好的與資料庫結合使用的例子。學習起來有一點困難。
換個角度說,martini營造的不是一個大而全的框架,而是一種組件生態martini-contrib。這個就是nodejs中的expressjs在做的事情。而且他的DI實作,讓第三方庫很容易改造為martini規范的中間件。倘若組件多起來,相信會有很大前途的。
不過,由于依賴注入的實作依賴reflect反射,而Go語言的反射庫效率很差。過多的中間件肯定會拖慢整體的速度。這就只能看Go語言以后的發展咯。
## 總結一下 ##
主要的框架現在是這三個。其實還有很多挺好玩的實作,比如類似java struct的 xweb,類似 python flask 的 entropy 和 ASP.NET MVC 的 goku。 多去看看,肯定是有好處的。
但是,更重要的,熟悉標準庫 !!!!!!
uj5u.com熱心網友回復:
beego是模塊化開發,各個模塊可以獨立使用,也可以替換的。uj5u.com熱心網友回復:
幾大框架 竟然就只說了這三種。。。。 iris呢? gin呢?uj5u.com熱心網友回復:
可能14年他們還沒有?或者不流行?uj5u.com熱心網友回復:
哈哈。補充一下beego:tls設定無法配置加密套件的順序,且設定方式很low。
uj5u.com熱心網友回復:
martini 已經不再維護了uj5u.com熱心網友回復:
用golang做web邏輯層不如做底層。uj5u.com熱心網友回復:
原生go專注寫介面,舍棄掉 session和模版引擎模塊 前端交給 vuejs爽歪歪uj5u.com熱心網友回復:
用beego五個月了,后來發現我們根本就只是使用它的orm而已。。。uj5u.com熱心網友回復:
gin 安裝:[centos6 安裝go框架gin的步驟,以及中間遇到的坑](http://www.fancyecommerce.com/2017/12/28/centos6-%E5%AE%89%E8%A3%85go%E6%A1%86%E6%9E%B6gin%E7%9A%84%E6%AD%A5%E9%AA%A4%EF%BC%8C%E4%BB%A5%E5%8F%8A%E4%B8%AD%E9%97%B4%E9%81%87%E5%88%B0%E7%9A%84%E5%9D%91/)uj5u.com熱心網友回復:
gin 如何呢? 我也很詫異這居然是幾年前的文章uj5u.com熱心網友回復:
不喜歡 beego的臃腫, 也不太喜歡使用框架uj5u.com熱心網友回復:
這些框架太老了uj5u.com熱心網友回復:
用了兩年Gin,其他模塊全靠自己擼,自己提升很快uj5u.com熱心網友回復:
gin和echo居然沒有uj5u.com熱心網友回復:
不要框架的路過uj5u.com熱心網友回復:
echo gin gf iris 呢?[六個比較流行的go web 比較](https://studyiris.com/detail?id=51&uid=1)uj5u.com熱心網友回復:
"github.com/labstack/echo""github.com/labstack/echo/middleware"
"github.com/pangpanglabs/goutils/echomiddleware"
"github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
這些為啥我都沒看到,是不重要么?我們專案基本都有用這些框架。
uj5u.com熱心網友回復:
能加上 Web 這個詞嗎? 框架多了去了uj5u.com熱心網友回復:
不要框架的路過uj5u.com熱心網友回復:
irisuj5u.com熱心網友回復:
https://gfer.me`GF(Go Frame)`是一款模塊化、松耦合、輕量級、高性能的Go語言應用開發框架。支持熱重啟、熱更新、多域名、多埠、多服務、HTTP/HTTPS、動態路由等特性,并提供了Web服務開發的系列核心組件,如:Router、Cookie、Session、服務注冊、配置管理、模板引擎、資料校驗、分頁管理、資料庫ORM等等等等,并且提供了數十個實用開發模塊集,如:快取、日志、時間、命令列、二進制、檔案鎖、物件池、連接池、資料編碼、行程管理、行程通信、TCP/UDP組件、并發安全容器、Goroutine池等等等等等等。
uj5u.com熱心網友回復:
好久遠的帖子uj5u.com熱心網友回復:
gin is betteruj5u.com熱心網友回復:
用iris的路過.golang語言沒有threadlocal特性太讓人遺憾了.
uj5u.com熱心網友回復:
只想說:https://goframe.orguj5u.com熱心網友回復:
golang做什么都適合,轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/109326.html
標籤:其他技術討論專區
上一篇:myqr使用問題
