2

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


shiweifu
2k 声望744 粉丝

引用和评论

0 条评论