使用Sinatra开发完整网站是否存在问题?

9
我正在开发一个新的网站,该网站的复杂程度与 Yelp.com 差不多。虽然我对 Ruby 不是很熟悉,但决定使用它来开发后端。在这个过程中,我偶然发现了 Sinatra。我真的很喜欢 Sinatra 中路由的简单性,并决定将其作为开发的起点。似乎大部分人都认为 Sinatra 适用于快速开发和“小型 Web 应用程序”。Sinatra 存在固有的扩展问题吗?还是这些评论源于你基本上需要从头开始构建一切?如何评价以 Sinatra 作为大规模 Web 应用的基础?感谢您提供任何关于此问题的意见。

我不确定 stackoverflow 是否适合询问此类观点问题,但这是我目前唯一可以得到反馈的资源。

2个回答

9
我最近完成了两个相当复杂的项目,使用Sinatra构建,我很喜欢这个过程。我喜欢的是它鼓励你从一开始就考虑正在构建的Web应用程序的API,而不是事后再加上。
现在我倾向于让API工作并测试,然后使用jQuery构建面向浏览器的前端。前端与后端之间的所有交互都通过API完成。
通过将辅助方法拆分到单独的库中并利用Ruby on Rails库(如ActiveRecord等),我发现代码的维护并不比我编写的任何其他代码更难,而且测试肯定很容易。
我编写了一些简单的通用路由,可以使用类似Nesta项目的想法聚集页面级内容(可以用markdown、纺织品或者HAML编写),这意味着我的99%的路由都是API调用,而不是页面显示调用。我还添加了一些漂亮的助手,用于基于规则的导航结构,这确实有所帮助。
总的来说,答案是否定的,使用Sinatra构建大型网站是没有问题的,而且我相信它可以带来设计更好的Web应用程序。

我对这个API与页面调用的哲学有点不熟悉。你能给我指一些阅读资料吗?顺便感谢你的回复。 - wuliwong

4
使用Sinatra构建大型网站不会遇到扩展问题,但肯定会让你在维护代码方面感到非常困难。虽然我喜欢Sinatra,但是在惯例优于配置的Rails中,它毫无疑问是赢家。还要注意的是,对于一个巨大的网站来说使用Sinatra并没有错/不好/不可能,只是正确使用它很难,你不希望以后后悔。如果你仍然固执地使用Sinatra,你可以尝试Padrino,它基本上是Sinatra的包装器(我从未使用过它,所以无法为你提供帮助)。

我听说过Padrino,你所说的约定俗成的问题是我担心的事情。我一定会研究一下Padrino。谢谢! - wuliwong
关于Padrino,我想再多说一点,他们建议先学习Sinatra,并且说你通常可以将你用Sinatra做的东西包含到Padrino应用程序中。听起来有点神奇,但Padrino相当模块化,因此您可以挑选其中的部分而无需使用整个框架,如果您愿意的话。 - wuliwong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接