您當前位置>首頁 » 新聞資(zī)訊 » 網站(zhàn)建設 >
為什麼我堅持用Go語言做Web應用開發框架?
發表時間:2018-6-19
發布人:葵宇科技
浏覽次數:21
點擊上方“CSDN”,選擇“置頂公衆号”
關(guān)鍵時刻,第一時間送達!
【CSDN編者按】很多情況下(xià),企業(yè)上線或需要快速疊代一款新的産品,但會發現原有的後端框架已不太适用,甚至影響了開發調試速度,那麼尋找一種新的開發框架和(hé)編程語言變得極為迫切。本篇将揭秘用于創建網站(zhàn)和(hé)REST API的最流行、最強力和(hé)最全面的Go框架。
Google的Go語言(又名Golang)已成為編寫網絡服務和(hé)API強有力的選擇。它可(kě)以編譯成快速運行的原生代碼,天生支持異步編程,還擁有廣泛和(hé)不斷擴大的用戶群。
下(xià)面列出了網絡開發中(zhōng)用到的Go語言的主要框架。一些框架旨在簡化用戶的使用,如(rú)API訪問(wèn)點等。還有一些主要是為了處理全面的網站(zhàn)開發,或者可(kě)以根據工作需要的組件擴張或縮減開發。
▌Go網絡開發框架:Beego
在某些方面,Beego會讓人聯想到Python中(zhōng)包羅萬象的Django Web框架。它具備各種Web應用程序的通(tōng)用功能,總共有八個(gè)模塊,你(nǐ)可(kě)以根據需要選擇使用。除了大多數Web框架中(zhōng)常見的模型-視圖-控制器(qì)(model-view-controller,MVC)組件外,它還包括訪問(wèn)數據庫的對象關(guān)系映射(object-relationship map,ORM)、内置緩存處理程序、會話處理工具、日志記錄機制和(hé)常用的操作HTTP對象的庫。
Beego還有一個(gè)與Django很相似的地方是它的命令行工具。例如(rú),你(nǐ)可(kě)以使用bee從頭創建Beego應用或管理現有的應用。
▌Go網絡開發框架:Gin
Go的第一個(gè)Web開發框架是Martini,但這個(gè)項目已經停止了維護。然而,其他Go框架如(rú)雨後春筍般紛紛湧現,它們使用Martini的基本思想,但是具有更好的性能和(hé)更多的功能。
Gin就是其中(zhōng)的一個(gè)項目。它使用修改過的的httprouter軟件包來提高速度,并為很多常見的場景提供處理程序,包括中(zhōng)間件、文(wén)件上傳、日志、将前端HTML組件綁定到後台的數據結構等等。其穩定版API是1.x版本,所以未來的變更應該不會破壞現有的Gin應用。
▌Go Web開發框架:Gorilla
Gorilla的定位是“Web工具箱”,而并非MVC風格的框架。它提供的庫可(kě)以幫忙解決Web服務編程中(zhōng)各種底層的問(wèn)題,包括context(在請求期間保存狀态)、mux(路(lù)由和(hé)調度),以及實現HTTP上的安全cookie、會話、websocket和(hé)RPC等功能。
Gorilla沒有提供模闆、表單和(hé)其他前端部分。你(nǐ)需要自己準備這些部分,你(nǐ)可(kě)以在其他框架中(zhōng)使用Gorilla的各個(gè)組件,或是在獨立組件中(zhōng)集成用Gorilla編寫的東西。
▌Go Web開發框架:Echo
Echo是另一個(gè)小框架,主要面向API。例如(rú),它并沒有提供模闆系統,所以你(nǐ)可(kě)以根據需要使用Go自己的html/template。但是,Echo提供了幾種常常用于API的中(zhōng)間件模塊,例如(rú)基本的認證和(hé)密鑰身份驗證、壓縮、代理和(hé)日志記錄。
Echo還提供了大量實用的recipe,其中(zhōng)很多無需大費周折就能實現。例如(rú),如(rú)果你(nǐ)想使用Let’s Encrypt來管理HTTPS證書,那麼可(kě)以設置一種recipe來自動(dòng)安裝這些證書。
▌Go Web開發框架:Iris
Iris的創建者稱其為“真正屬于Go的Express.js”,也就是說,它是JavaScript / Node.js的Web框架的Go語言版,它使用最小設計,絕大部分功能都由插件提供。Iris提供基本的MVC功能,自帶對中(zhōng)間件、會話、路(lù)由和(hé)緩存的支持。
以下(xià)文(wén)檔包含很多Iris的示例,包括與React前端的交互,或在Docker / Kubernetes環境中(zhōng)運行的項目:https://iris-go.com/v10/recipe
▌Go網絡開發框架:Revel
Ruby>除了提供基本的MVC,Revel還允許你(nǐ)自由使用其他組件來滿足其他需求。你(nǐ)可(kě)以使用Go自己的原生html/template包,或自己提供。同樣,對于HTTP引擎,你(nǐ)也可(kě)以使用Go自己的或第三方提供的。緩存可(kě)以在本地的内容中(zhōng)完成,也可(kě)以通(tōng)過Memcached或Redis在後台完成。但是,該框架沒有數據庫的原生ORM。Revel文(wén)檔的一個(gè)例子(zǐ)(https://revel.github.io/examples/booking.html)中(zhōng)使用了Gorp庫,但理論上來說你(nǐ)可(kě)以使用任何Go ORM。
原文(wén):https://www.infoworld.com/article/3274464/web-development/6-must-have-web-frameworks-for-the-google-go-language.html
作者:Serdar Yegulalp
譯者:彎月(yuè);責編:楊麗(lì)