BeGoo說起來跟ruby還有一點點淵源,他的路由設計參考了sinatra,整體設計則參考了python的tornado與flask,都是輕量級框架。在這樣的基礎上結合go語言本身的優點,成為一個適合快速開發輕量級http協定API或Web服務。BeeGo是採用原生的net/http
函數包,雖然跟python或ruby比較已經算是極快,但在速度上比不上昨天介紹的gin(因為httprouter的關係)。
熟悉現代網路框架像老媽子一樣把最佳實務都打包在一起給你的工程師可能會非常懷念,Beego提供了許多被寵壞的人視為「理所當然」的支援:
如果你不喜歡官方選配,Beego也有提供「模塊設計」,讓每個部分像樂高積木一樣可以讓你自由拆解重組,打造為最符合個人需求的樣貌。光是介紹到這裡,我就深深被Beego所吸引。畢竟如果像我從Ruby on Rails跳槽,速度不太會是我在意的地方,反正隨便一個新框架都比我快(XD)。
我之前就有聽過Golang在中國很紅,不過看了採用公司列表才發現,Beego在中國受歡迎的程度還真是遠超乎我的想像:
連官方網站上都有支援簡中,如果你英文不好的話,或許會覺得BeeGo相當親切(假如你有辦法讀簡體)。
安裝非常簡單:
go get github.com/astaxie/beego
除此之外,官方建議為了更好的使用bee套件,也可以加裝下面這個:
go get -u github.com/beego/bee
設置GOPATH
什麼的就不說了。
首先來跑個Hello World看看:
package main
import (
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (this *MainController) Get() {
this.Ctx.WriteString("hello world")
}
func main() {
beego.Router("/", &MainController{})
beego.Run("localhost:3000")
}
跟Gin一樣預設Port是8080,我不改成3000就會渾身不對勁。這個範例看似簡單,其實他做了幾件事:
MainController
的struct,匿名包含了beego.Controller
,這樣MainController
就擁有了beego.Controller
的所有方法。MainController
就包含了GET、POST等所有方法,在這裏我們覆寫他,這樣當MainController
執行GET的時候,就會執行我們的方法。MainController
。再下去當然可以講很多很多,可惜今天的篇幅就到這邊了(誰決定的?!),未來如果有機會應該會繼續多玩一些Beego的應用。鐵人賽進入倒數兩天,時間真是過得飛快呢!