為什麼我堅持用Go語言做Web應用開發框架?
點選上方“ CSDN ”,選擇“置頂公眾號”
關鍵時刻,第一時間送達!
【CSDN編者按】很多情況下,企業上線或需要快速迭代一款新的產品,但會發現原有的後端框架已不太適用,甚至影響了開發除錯速度,那麼尋找一種新的開發框架和程式語言變得極為迫切。本篇將 揭祕用於建立網站和REST API的最流行、最強力和最全面的Go框架。
Google的Go語言(又名Golang)已成為編寫網路服務和API強有力的選擇。它可以編譯成快速執行的原生程式碼,天生支援非同步程式設計,還擁有廣泛和不斷擴大的使用者群。
下面列出了網路開發中用到的Go語言的主要框架。一些框架旨在簡化使用者的使用,如API訪問點等。還有一些主要是為了處理全面的網站開發,或者可以根據工作需要的元件擴張或縮減開發。
▌ Go網路開發框架:Beego
在某些方面,Beego會讓人聯想到Python中包羅永珍的Django Web框架。它具備各種Web應用程式的通用功能,總共有八個模組,你可以根據需要選擇使用。除了大多數Web框架中常見的模型-檢視-控制器(model-view-controller,MVC)元件外,它還包括訪問資料庫的物件關係對映(object-relationship map,ORM)、內建快取處理程式、會話處理工具、日誌記錄機制和常用的操作HTTP物件的庫。
Beego還有一個與Django很相似的地方是它的命令列工具。例如,你可以使用bee從頭建立Beego應用或管理現有的應用。
▌ Go網路開發框架:Gin
Go的第一個Web開發框架是Martini,但這個專案已經停止了維護。然而,其他Go框架如雨後春筍般紛紛湧現,它們使用Martini的基本思想,但是具有更好的效能和更多的功能。
Gin就是其中的一個專案。它使用修改過的的httprouter軟體包來提高速度,併為很多常見的場景提供處理程式,包括中介軟體、檔案上傳、日誌、將前端HTML元件繫結到後臺的資料結構等等。其穩定版API是1.x版本,所以未來的變更應該不會破壞現有的Gin應用。
▌ Go Web開發框架:Gorilla
Gorilla的定位是“Web工具箱”,而並非MVC風格的框架。它提供的庫可以幫忙解決Web服務程式設計中各種底層的問題,包括context(在請求期間儲存狀態)、mux(路由和排程),以及實現HTTP上的安全cookie、會話、websocket和RPC等功能。
Gorilla沒有提供模板、表單和其他前端部分。你需要自己準備這些部分,你可以在其他框架中使用Gorilla的各個元件,或是在獨立元件中整合用Gorilla編寫的東西。
▌ Go Web開發框架:Echo
Echo是另一個小框架,主要面向API。例如,它並沒有提供模板系統,所以你可以根據需要使用Go自己的html/template。但是,Echo提供了幾種常常用於API的中介軟體模組,例如基本的認證和金鑰身份驗證、壓縮、代理和日誌記錄。
Echo還提供了大量實用的recipe,其中很多無需大費周折就能實現。例如,如果你想使用Let’s Encrypt來管理HTTPS證書,那麼可以設定一種recipe來自動安裝這些證書。
▌ Go Web開發框架:Iris
Iris的建立者稱其為“真正屬於Go的Express.js”,也就是說,它是JavaScript / Node.js的Web框架的Go語言版,它使用最小設計,絕大部分功能都由外掛提供。Iris提供基本的MVC功能,自帶對中介軟體、會話、路由和快取的支援。
以下文件包含很多Iris的示例,包括與React前端的互動,或在Docker / Kubernetes環境中執行的專案: https://iris-go.com/v10/recipe
▌ Go網路開發框架:Revel
Ruby on Rails為MVC風格的Web框架提供了一個通用模式,許多其他語言都仿照Ruby on Rails實現了自己的框架。Revel的建立者將其視作Rails的靈魂。
除了提供基本的MVC,Revel還允許你自由使用其他元件來滿足其他需求。你可以使用Go自己的原生html/template包,或自己提供。同樣,對於HTTP引擎,你也可以使用Go自己的或第三方提供的。快取可以在本地的內容中完成,也可以通過Memcached或Redis在後臺完成。但是,該框架沒有資料庫的原生ORM。Revel文件的一個例子( https://revel.github.io/examples/booking.html )中使用了Gorp庫,但理論上來說你可以使用任何Go ORM。
原文: https://www.infoworld.com/article/3274464/web-development/6-must-have-web-frameworks-for-the-google-go-language.html
作者:Serdar Yegulalp
譯者:彎月;責編:楊麗