今年有人問我學習Go要用哪個框架?
我心想說
I don's know 大家可以左轉了
對!我真的那瞬間變成周杰倫
就是開不了口讓你知道
你其實不需要框架
一開始寫Go的時候
我也有不太習慣
想說
是我們公司比較落後?
為什麼沒有框架
以後跳槽面試
會不會被釘到牆上
在程式開發的世界裡:
Python 有 Django、Flask、FastAPI;
Java 有 Spring;
那 Golang 呢?其實也有一些框架,比如 Gin、Echo、Beego 等等。
如果你使用過框架
你就會瞭解其實有框架的好處,自然也有框架的限制
尤其.......
你專案框架版本還停留在上古時代
我經手的案子有過Django REST 2.x 版本(那時候已經4.x)+Python 3.7
想用個async,只是會弄死你自己而已
但在Go的世界裡,用Go標準庫+第三方庫,你就可以有個很棒的應用程式
而且你就也會成為Allen那個自由的男人 一個不受框架束縛的開發者
這也呼應了Go的設計哲學
Go devs prefer simplicity, over high engineering or magic stuff
儘管如此,為了提高開發效率和方便性,社群還是出現了一些不錯的框架
Gin:
Stars: 78k
用 Go 編寫的高性能 Web 框架。
提供類似於 Go框架Martini 的 API,但性能更好。
主要特色是路由速度快,內建許多實用功能,如中介軟體(Middleware)、JSON 驗證、路由群組等。
Beego:
Stars: 31.4k
完整的應用框架,類似於 Django(Python)或 Laravel(PHP)。
提供 MVC 架構、ORM、自動化文件等豐富功能。
適合用於快速開發企業級應用。
Echo:
Stars: 29.5k
簡潔又高效的 Go Web 框架。
支援中介軟體、路由群組、資料繫結、驗證和渲染等功能。
以高性能和易用性聞名。
那麼,是否需要使用框架?
這取決於你的專案需求和個人喜好。
直接使用 Go 的標準函式庫或輕量級框架(如 Gin、Echo)可能更適合。這些框架不會過度干涉你的程式結構,提供必要的工具來簡化開發。
Beego 提供了類似其他語言全功能框架的體驗,包含完整的 MVC、ORM、路由等功能,適合快速建構大型專案。
公司需求(內部框架的優勢)
當公司有多個服務時,開發一個可重用的內部框架可以統一處理如配置、日誌、路由、HTTP 錯誤、指標等問題,這樣可以確保在各個專案中行為一致,減少重複工作。
舉個例子:Kratos —— bilibili 開源的 Go 框架(裡面還有一個分散式的限流器),實用!
Golang 是否需要框架,取決於:
所以,Golang 的框架能不能吃?
當然可以!只是看你想吃清淡的(標準函式庫、輕量級框架),還是想大快朵頤(全功能框架)。
或者你是個熱愛研究第三方package的開發者,那當然不要用框架!
無論選哪個
適合自己的,才是最好的。
最好的Go 框架:沒有框架?
https://blog.csdn.net/RA681t58CJxsgCkJ31/article/details/128310360
Reddit討論
https://www.reddit.com/r/golang/comments/15r8mk4/why_arent_go_frameworks_as_comprehensive_as_others/