[译] 在小项目开发中,Roda 对比 Sinatra

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


胡说八道
一些 Web 开发方面的技术文章,有翻译,有原创
1.9k 声望
743 粉丝
0 条评论
推荐阅读
[译] 一个 Rails 开发者眼中的 Hanami
我还记得第一次听说 Hanami 框架的时候,是几年前,在 Wroclove.rb 会议的时候。当时并没有真正引起我的关注,那时我刚刚进入 Ruby 世界,正 100% 专注于学习 Rails,我不想在大脑认知上,接收另一个框架的信息。

shiweifu阅读 2.3k

为什么要有refreshToken
当你第一次接触的时候,你有没有一个这样子的疑惑,为什么需要refreshToken这个东西,而不是服务器端给一个期限较长甚至永久性的accessToken呢?抱着这个疑惑我在网上搜寻了一番,其实这个accessToken的使用期限...

一口鸭梨阅读 552

推荐8个提高工作效率的IntelliJ插件
IntelliJ目前已经成为市面上最受欢迎的Java开发工具,这得益于里面非常丰富的插件机制。本文我将分享在日常开发中我经常使用的5个插件,它们可以帮助您提高工作效率。

视角线阅读 366

封面图
Apache ShardingSphere在转转亿级交易系统落地实践
大促期间DB压力大,单库查询qps上万占用大量数据库资源,写性能大大降低;数据与日剧增,单库中包含非常多数据量过数亿的大表,占用空间接近服务器的容量上限;数据量太大,数据备份和恢复需要耗费很长时间,极端...

小源学算法阅读 364

5种高大上的yml文件读取方式,你知道吗?
1、Environment在Spring中有一个类Environment,它可以被认为是当前应用程序正在运行的环境,它继承了PropertyResolver接口,因此可以作为一个属性解析器使用。先创建一个yml文件,属性如下:person: name: hydra...

视角线阅读 352

封面图
5种高大上的yml文件读取方式,你知道吗?
1、Environment在Spring中有一个类Environment,它可以被认为是当前应用程序正在运行的环境,它继承了PropertyResolver接口,因此可以作为一个属性解析器使用。先创建一个yml文件,属性如下:person: name: hydra...

数据先声阅读 340

RPA界面元素智能自适应定位与操控技术
什么是RPA?RPA(Robotic Process Automation,机器人流程自动化)是通过特定的、可模拟人类在计算机界面上进行操作的技术,它可以按规则自动执行相应的流程任务,代替或辅助人类完成相关的计算机操作,从而节约...

达观数据阅读 329

封面图
1.9k 声望
743 粉丝
宣传栏