譯自: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 值得以試。