译自: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 值得以试。

03-05 22:54