哇嗚,真不可思議,轉眼間時光飛逝已經倒數一天,明天就是完賽的日子。更多的感言還是留待明天吧(畢竟是傳統之一)。
今天我們要介紹的golang web framework是Iris,一個號稱地表上速度最快的框架。如果速度跟效能是你的第一考量,那似乎也沒什麼好猶豫的。不過github星星數排名第三,看來工程師除了速度外,也在意一些綜合原因。
這麼說也是再自然不過的,畢竟像是ruby能存活至今,正代表了「工具本身無分優劣,端看是應用在怎麼樣的場合」。不同的情境條件下,最佳的框架與語言自然也會不同。而吾輩的職責便是充分學習各種框架知識,才能應付不斷變化的戰場。有道是好的戰士不會只精通一樣武器,而像是金字塔型分佈,除了有一項主力以外,其他也必須要略懂才行。至少僅以rails工程師而言,近年來不自稱「全端」,對於前端js framework諸如React.js或是Vue.js等有些涉獵,要找工作的難度是相當高的呢。
話說回頭,Iris的狀況蠻特別的,根據跑分結果他確實是速度最快,但也有文章指出,跑分的結果不完全等同於現實的情況。這樣的說法我基本上可以理解,這邊並不是想要質疑數據造假的問題,而是跑分(Benchmark)充其量只能模擬壓力跟流量,與現實中真實的壓力當然會有落差,以及跑分的案例通常會有過於簡化的問題。
不然的話,根據資料顯示,Iris簡直是最「完美」的golang框架了,不只速度最快,支援功能最多,最多學習資源等等優點。但有趣的是,Iris也是我唯一看到有「黑粉」的框架,有一批人反推Iris,認為它速度雖快但用起來不方便等等。我想光是速度一項優點,就值得我們對他有點基礎的了解,所以我們就來看看Iris的魅力!
老樣子,使用go get
安裝:
go get -u github.com/kataras/iris
沒有什麼意外與驚喜。
Iris提供的範例相對之下還蠻完整的,一口氣提供了許多內容。我們直接看範例:
package main
import "github.com/kataras/iris"
func main() {
app := iris.Default()
// Method: GET
// Resource: http://localhost:3000/
app.Handle("GET", "/", func(ctx iris.Context) {
ctx.HTML("<h1>Hello world!</h1>")
})
// same as app.Handle("GET", "/ping", [...])
// Method: GET
// Resource: http://localhost:3000/ping
app.Get("/ping", func(ctx iris.Context) {
ctx.WriteString("pong")
})
// Method: GET
// Resource: http://localhost:3000/hello
app.Get("/hello", func(ctx iris.Context) {
ctx.JSON(iris.Map{"message": "Hello iris web framework."})
})
// http://localhost:3000
// http://localhost:3000/ping
// http://localhost:3000/hello
app.Run(iris.Addr(":3000"))
}
範例一口氣提供三個路由,前兩個差異不大,只是寫為Html或是String的差別。第三個是回傳json格式,作為API的示範。
如果想看更多範例,可以參考官方整理的iris example,希望大家都能選擇順手的框架,開發順利囉!