golang框架對比Revel and Beego


1 框架背景
1.1 Revel
Revel是Google官方發布的一款go語言web框架,其具有熱編譯,高性能,無狀態,模塊化等特性,非常適合做web開發。在GitHub上有10.7k顆star,124個貢獻者。

1.2 Beego
beego 是一個快速開發 Go 應用的 HTTP 框架,他可以用來快速開發 API、Web 及后端服務等各種應用,是一個 RESTful 的框架,主要設計靈感來源於 tornado、sinatra 和 flask 這三個框架,但是結合了 Go 本身的一些特性(interface、struct 嵌入等)而設計的一個框架。典型的MVC架構。

Beego是由國人謝孟軍設計的一款go語言web框架,在GitHub上有18.7k顆star,281個貢獻者。

2 框架特性
2.1 Revel
熱編譯--編輯,保存,和刷新時,Revel自動編譯代碼和模板,如果代碼編譯錯誤,會給出一個錯誤提示,同時捕捉運行期錯誤。

全棧功能-- Revel支持:路由, 參數解析, 驗證, session/flash, 模板, 緩存, 計划任務, 測試, 國際化 等功能。

高性能-- Revel 基於 Go HTTP server 構建。這是techempower發布的 最新評測結果 。在各種不同的場景下進行了多達三到十次的請求負載測試。

2.2 Beego
簡單化-- RESTful 支持、MVC 模型,可以使用 bee 工具快速地開發應用,包括監控代碼修改進行熱編譯、自動化測試代碼以及自動化打包部署。

智能化--支持智能路由、智能監控,可以監控 QPS、內存消耗、CPU 使用,以及 goroutine 的運行狀況,讓您的線上應用盡在掌握。

模塊化-- beego 內置了強大的模塊,包括 Session、緩存操作、日志記錄、配置解析、性能監控、上下文操作、ORM 模塊、請求模擬等強大的模塊,足以支撐你任何的應用。

高性能-- beego 采用了 Go 原生的 http 包來處理請求,goroutine 的並發效率足以應付大流量的 Web 應用和 API 應用,目前已經應用於大量高並發的產品中。

3請求流程
3.1 Revel


Revel 暴漏一個單獨的 http.Handler, 負責實例化控制器 (請求的上下文),並沿着過濾器鏈傳遞請求。

Filters 鏈接到一個請求處理鏈,由水平相關的功能組成,比如請求記錄,cookie策略,授權等。大部分內建功能都是由過濾器實現的。

Actions 是處理用戶輸入和產生請求結果的的函數。

3.2 Beego


 

4 模板系統
4.1 Revel
Revel 使用 Go 模板, 在下面兩個目錄中查找模板:

1 應用程序的 views 目錄 (包括所有的子目錄)

2 Revel的 templates 目錄.

比如有一個控制器 Hello,方法名為World, Revel會查找名字為 views/Hello/World.html的模板。模板名字不區分大小寫,所以 views/hello/world.html 與 views/HeLlO/wOrLd.HtMl都是匹配的模板.

Revel 提供了錯誤頁面模板 (在開發模式中友好的顯示編譯錯誤), 開發者也可以重寫這些模板,比如 app/views/errors/500.html.

示例:

 

創建一個頁頭文件和一個頁腳文件,中間的模塊都可以通過{{template “xxx” .}}將header文件和footer文件導入。

 

 

 

4.2 Beego
beego 的模板處理引擎同樣采用的是 Go 內置的 html/template 包進行處理,而且 beego 的模板處理邏輯是采用了緩存編譯方式,也就是所有的模板會在 beego 應用啟動的時候全部編譯然后緩存在 map 里面。

beego 中默認的模板目錄是 views,用戶可以把模板文件放到該目錄下,beego 會自動在該目錄下的所有模板文件進行解析並緩存,開發模式下每次都會重新解析,不做緩存。

用戶無需手動的調用渲染輸出模板,beego 會自動的在調用完相應的 method 方法之后調用 Render 函數。

go 統一使用了 {{ 和 }} 作為左右標簽,沒有其他的標簽符號。

使用 . 來訪問當前位置的上下文

使用 $ 來引用當前模板根級的上下文

使用 $var 來訪問創建的變量

[more]

 

4個人感受
4.1 Revel
Revel由於是Google開發的框架,通過命令安裝比較慢而且很多包下載不下來,需要從其他渠道下載。比如websocket包,缺少這個包無法創建項目。項目需要的包我都是從這個網站下載。https://gopm.io/download,導入需要的包的路徑,下載之后放到相應的位置。同時Revel創建項目也比較慢。創建一個項目大概需要二三十秒。

Revel的項目結構清晰,代碼也比較簡單易懂。

4.2 Beego
Beego由於是國人開發,安裝很快,創建項目也很快。不過里面好像也缺少websocket包。但不影響創建項目。

整體項目結構清晰,但是代碼比較復雜,不容易看懂。官方文檔詳細。

 
————————————————
版權聲明:本文為CSDN博主「i wanna more ...」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_42774426/java/article/details/88875506


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM