[譯] 在小專案開發中,Roda 對比 Sinatra

shiweifu發表於2020-07-23

譯自:https://engineering.procore.com/roda-vs-sinatra-for-small-projects-2/

我是一名黑客,我喜歡構建一些東西。我在意開發效率以及效能。我每天都使用 Rails,然而它對我的個人專案來說,有些太重了。

當我出於興趣而編寫一些程式碼時,我往往不太想使用 Rails。最近我在用 Roda。

Roda 是啥?

Roda 是一個微型 Web Framework,由 Jeremy Evans 編寫,他同時也是我最喜歡的 Ruby 專案 Sequel 的作者。

Roda 有兩個特性非常棒 - 它的效能,以及它的樹狀結構的路由。而這兩者是相關的。

Roda 的樹狀路由結構很酷,它建立一棵樹來檢查路由。這意味著您可以在不影響效能的情況下,巢狀和引入路由。

你同樣可以通過將路由拆分到不同檔案,來使你的程式碼保持 DRY,以及為頂級路由引入許可權驗證的程式碼,來替代逐個路由引入。

這使得專案的結構整潔,又靈活。

效能也使 Roda 的優勢。基於我們的測試,它使目前最快的 Ruby Web Framework。

當我作為使用者時,我會對那些緩慢的 app 印象深刻,我不希望我的 app 這樣,效能對我很重要。我希望所使用的工具儘可能的快,同時也足夠有趣。

讓我們來看一個簡單的 hello world

Roda Example

require 'roda'

class App < Roda
  route do |r|
    r.get '/hi' do 
      "Hello World"
    end
  end
end

這段程式碼基本什麼也沒做。它只是為你展示了,當你編寫一些小型個人專案時,你不需要做需要配置初始化工作,然後才能真正的開始幹活。

我個人的小專案只有少量的端點,所以 Rails 那種 MVC 的結構過於龐大。我寧願動手修改,將所有的內容都放在一個檔案。

同樣的,當您的專案邊的龐大時,將其拆分為多個小檔案是很自然的事。

為什麼不用 Sinatra

Sinatra 很棒,一直以來,它都是我最喜愛的軟體專案之一。

我使用 Sinatra 是為了解決效能問題。它比Rails 快很多。只是 Cuba 更快。

當編寫 Ruby Web Benchmark 報告時,我發現 Sinatra 並沒有像我認為的那樣快,於是我開始使用 Cuba 和 Roda。

我已經使用 Roda 在一些小專案,它對我很有幫助,我很喜歡它。

效能上,Roda 比 Sinatra 快了接近 2.5 倍,這點也很榜。

Roda 並不完美

並不是所有專案,使用 Roda 都是號選擇。我用在一些只有我一個開發人員的小專案上。除非是一個小的獨立工具,否則我不會讓我的 Procore 團隊嘗試它。

Roda 的文件搞的挺好,不管怎樣,它是一個小社群。

Roda 並不是一個完整的 web 框架,主要是一個 web request 路由。這意味著有時候你得自己解決問題。但是許多用慣 Rails 的人,也許不太喜歡這點。

最後,我很喜歡 Roda,它很有趣,可以讓我在日常工作中得到休息。如果你是一名 Ruby 開發者,Roda 值得以試。

相關文章