iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Software Development

那些年,我們一起走過的Go錯系列 第 6

Day06-Golang框架是什麼?能吃嗎?

  • 分享至 

  • xImage
  •  

前言


今年有人問我學習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/


上一篇
Day05-Go-傳值、傳指標傻傻分不清楚?
系列文
那些年,我們一起走過的Go錯6
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言