我目前正在使用 Groovy 和 Grails。虽然 Groovy 非常简单,因为它基本上是 Java,但我不能说我对 Grails 很熟悉。我读到 Groovy 之于 Grails 就像 Ruby 之于 Ruby on Rails,但这是什么意思?
11 回答
为了解决您对隐喻的困惑(尽管在您的问题下已换句话回答):
Groovy 之于 Grails 就像 Ruby 之于 Ruby on Rails,但这是什么意思?
Grails 是一个基于/使用 Groovy 编程语言构建的 Web 框架,它为 Groovy 做与 Rails(Ruby 的 Web 框架)为 Ruby 做的事情相同的事情。
“在轨道上”是什么意思?
这个问题的答案归结为这些 Web 框架的本质。
这些 Web 框架(Grails & Rails)建立在“约定优于配置”的前提下,这意味着使用通用约定来开发 Web 应用程序可以带来更高的生产力和更可维护的应用程序(这是一个粗略的概括)。通过定义一个约定并坚持下去,您会发现您的应用程序很容易生成并且可以快速启动和运行。
这就是“在轨道上”对我的意义,就像火车一样。当一条新的火车路线被开发出来时,不用担心重新发明火车从一个地方到另一个地方的方式,几十年来一直通过一个惯例解决这个问题:铁路。正如火车路线上的轨道从两个位置限制其路径一样,基于约定的 Web 框架使用约定来提高应用程序开发人员的灵活性,以便他们可以专注于其应用程序的基本业务问题。
Web 框架约定的一个关键好处是,Web 框架现在可以假设应用程序的某些层如何连接在一起。在 Rails 中,通常可以假设如果一个数据库表有复数名称,则映射到该表的 ActiveRecord 类将具有相应的单数名称。因此,Rails 代码生成器可以使用数据映射信息来生成数据访问代码,例如动态查找器、迁移、延迟加载的关联遍历等。基于配置的框架中的这种数据访问代码手工编写很费力。
有几个人提到了 Rails/Grails 的技术细节。一些人还提到“约定优于配置”是 Rails/Grails 中的“轨道”。这越来越接近真相了。但这只是更广泛的 Rails 哲学的一个特征,即固执软件的概念。
自以为是的软件不能只用技术术语来描述;这是一种哲学;一种精神;一种态度。喜欢或讨厌它,这就是 Rails 的核心所在。
以下是 2005 年对 Rails 的创建者David Heinemeier Hansson 的采访摘录:
Rails 是固执己见的软件。它避免将旧的软件理念置于首要位置。其中一个理想是灵活性——我们应该尝试适应尽可能多的方法,我们不应该对一种开发形式的判断超过另一种。好吧,Rails 确实如此,我相信这就是它起作用的原因。
使用 Rails,您可以在基础设施级别交换灵活性以在应用程序级别获得灵活性。如果您乐于沿着我在 Rails 中嵌入的黄金路径工作,那么您将在生产力方面获得巨大的回报,使您能够在应用程序级别上做更多、更快、更好的工作。
还有进一步探讨主题的稍后采访。
所以'on rails'是'有意见'的隐喻,这就是它被命名的原因。任何记者或作家都会告诉你,“Ruby on Rails”是押韵的事实,这是吸引人们注意力的可靠方式。
我认为一个努力成为“类似rails”的框架是指几件事:
模型级:AR 模式的 ORM(而不是数据映射器)、迁移或一些自动化模式和模型层管理,在应用程序中处理外键(不在数据库模式中,也不使用存储过程或纯 DBMS 逻辑)
鼓励 TDD:为单元测试自动生成骨架,
连接数据库表名和模型名、控制器和视图操作以及 HTML 模板的命名约定
简化的路线识别和路线生成方案
强调 REST 架构
与 ajax 库集成:RJS、prototype 和 scriptaculous
Rails是一个用于开发具有数据库后端的 Web 应用程序的框架。我认为这个名字最初是一个文字游戏。火车可以把你带到一个非常快的地方,但仅限于铁轨去的地方。
在轨道上意味着你无法控制你要去哪里。这意味着,你只能去已经铺设了铁轨的地方。任何试图去那些铺设铁轨的人没有预料到你会去的地方都会导致挫败感。
这是一种汽车的表达方式。当一辆汽车的操控性非常好时,它被称为“像在铁轨上行驶一样过弯”(即它给你很好的控制)。
我不知道那是不是铁路人得这个名字的地方,但这就是我解释它的方式。
非常简短的答案:约定优于配置。
如上所述,Rails 和 Grails 为 Web 应用程序开发提供了约定——以某种方式命名您的部分并将它们放在正确的位置使您的应用程序在默认情况下运行,无需额外配置。当你想偏离约定时,你可以在那里配置你的方式。
我不同意“在轨道上是一种关于约定优于配置的哲学”等其他评论。
尽管 rails 确实遵循这些理念,但“Ruby on Rails”是 Web 框架的名称。不多也不少。它不是指任何特定的“在轨”,它只是一个品牌名称,就像麦当劳是一个品牌名称一样。
如果其他人编写了另一个框架并将其称为“Python on Rails”,那么就会有另一个品牌名称。如果不是,“XYZ on rails”只是意味着人们感到困惑。
Ruby 和 Groovy 是语言。
Ruby on Rails 是一个突破性的 webapp 框架。请参阅上面关于自以为是的软件的优秀答案。
从历史上看,Groovy webapp 框架的暂定名称是Groovy on Rails。然而,RoR 社区反对。团队选择了Grails。
这是一个比喻,我几乎要说这需要解释。无论如何,这是 Ruby on Rails 所做的一个非常好的比喻。它使得做(去)常见的事情变得非常容易,即测试、验证、部署、MVC。