【问题标题】:Why controllers? [closed]为什么是控制器? [关闭]
【发布时间】:2015-11-22 09:08:49
【问题描述】:

我花了很多时间在 sinatra 上进行开发,这对我来说效果很好,因为我只从事过小型项目,而且规模不是问题。现在我需要使用rails,结构对我来说有点混乱。我知道当我输入localhost:3000/images 时,rails 在routes.rb 中查找路线(例如get 'images#index'),然后进入控制器images,然后在图像中查找index 函数,最后找到@987654326 @view 并渲染它。

为什么所有这些更改都是必要的?难道它不能像 sinatra 那样简单(它似乎只在主文件中包含控制器步骤)吗?在一个答案中,我正在寻找为什么最好按照 rails 的方式来做,包括具体的原因、优点和缺点以及示例。

提前致谢!

【问题讨论】:

  • 能否请反对者解释一下,以便我改进我的问题?
  • 我没有投反对票,但我确实标记为主要基于意见,因为我相信它是。它是关于为什么拥有控制器是好的观点,就像它关于是否使用 Rails 或 Sinatra 的观点一样。这类问题被认为超出了 SO 的范围,因为它们更适合类似论坛的讨论环境,而不是像这样的问答环境。
  • 我不想问哪个更好,而是为什么 rails 使用控制器。
  • 简单的答案是它遵循 MVC 范式并且设计了控制器。这就是 Rails 有控制器的原因。如果你质疑为什么 MVC 有控制器,那么你基本上是在质疑 MVC 模式,这是一个见仁见智的问题。
  • 好的,谢谢!这实际上很好地回答了我的问题。

标签: ruby-on-rails controller sinatra


【解决方案1】:

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 之间差异及其用例的文章。这里有几个有趣的博客:

Rails vs. Sinatra

Rails vs. Sinatra by Example

【讨论】:

    【解决方案2】:

    K M Rakibul Islam 的回答很棒。您还可以查看Rack。 Rails 和 Sinatra 都是基于它构建的。 Rack 是一个 Web 服务器接口,它期望“app”是一个 Ruby 对象,它通过一个名为 call 的方法获取请求哈希,然后用一个包含 http 响应代码、http 标头和响应正文的数组进行响应.这是相当准系统。查看 Rack 可能会让您更好地了解两者之间的分歧——如果您对“如何”而不是“为什么”感兴趣的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2012-08-10
      相关资源
      最近更新 更多