我花了很多时间在sinatra上进行开发,这对我来说很好,因为我只从事小型项目并且规模不是问题。现在我需要使用rails,结构对我来说有点混乱。我理解当我键入localhost:3000/images
rails时会查找routes.rb
中的路由(例如get 'images#index'
),然后转到控制器images
然后在图像中查找{{1}函数,最后找到index
视图并呈现它。
为什么所有这些变化都必要?它不像sinatra(它似乎只包括主文件中的控制器步骤)更简单吗?在一个答案中,我正在寻找为什么最好以rails的方式做到这一点,包括具体原因,优点和缺点以及示例。
提前致谢!
答案 0 :(得分:3)
Konstantin Haase是Sinatra的当前维护者,并认为他们都适合不同类型的应用程序:
他们都在解决一系列不同的问题,即使他们 确实重叠。虽然Rails是一个专注于编写模型的框架 驱动Web应用程序,Sinatra是一个处理HTTP的库 从服务器端。如果你考虑HTTP 请求/回应,Sinatra是理想的工具。如果你需要满员 集成和尽可能多的样板,Rails是通往的方式 去。
David Heinemeier Hansson也认为这两者都有空间,但感觉应用程序的大小会影响使用哪个应用程序:
Sinatra非常适合微型风格,而Rails则不然。只要你 保持微观,Sinatra将击败Rails。如果你超越微,Rails 将击败Sinatra。
所以,基本上,Sinatra和Rails是不同的,它们有不同的用例。 Rails是一个开源的全栈Web应用程序框架。它遵循流行的 MVC框架(模型,视图,控制器)模型,并以其“约定优于配置”方法应用程序开发而闻名。因此,正如您所见,controller
是Rails的一部分。
您可以找到许多描述Rails和Sinatra之间差异的文章及其用例。这里有几个有趣的博客:
答案 1 :(得分:3)
K M Rakibul Islam的答案很棒。您也可以查看Rack。 Rails和Sinatra都是建立在它上面的。 Rack是一个Web服务器接口,需要一个" app"成为一个Ruby对象,通过一个名为call
的方法获取请求哈希,然后使用包含http响应代码,http头和响应主体的数组进行响应。它非常准确。看看Rack可能会让你更好地理解两者是如何分开的 - 如果你对#34感兴趣,那么"而不是"为什么"。