HAML是经验丰富的Ruby / Rails开发人员的更好工具吗?

时间:2011-04-12 17:08:51

标签: ruby-on-rails ruby haml

成为新的Ruby on Rails学生/开发人员的乐趣之一是不断发现新的宝石,让我的生活更有趣或更轻松。最近,我“发现”了HAML,它似乎是使ERB代码比现有代码更具可读性的绝佳工具。但是,我想知道像我这样的新开发者是否应该尽早使用像HAML这样的工具,或者在我使用普通Ruby / Rails代码的专业知识成熟之前推迟更加聪明。我想,我担心的是过早使用像HAML这样的工具可能会阻碍我通过它提供的编码“快捷方式”对Ruby的全面理解。你有什么经验的编码员说的?

8 个答案:

答案 0 :(得分:6)

采用HAML路线并不能为您提供快捷方式,因为它不像HAML那样抽象出任何你可能错过的东西(除了HTML)。 HAML是ERB的替代品,而不是抽象。

话虽如此,我认为这完全取决于你。如果你还没有学过,我会把两者都做好,看看你更喜欢哪一个。我认识一些喜欢HAML的人,还有一些喜欢ERB的人。

另外需要指出的是,ERB中存在大量代码,因此至少获得ERB的一般要点将有助于阅读其他代码。

答案 1 :(得分:3)

我会投票支持后者。在我看来,最好坚持erb,至少目前如此。主要原因是你可以利用你的时间学习更有成效的事情,比如测试,路由,REST和其他更重要的事情。

这也是品味问题。哈姆很好,但我发现erb还不错,对我需要做的很好。我也想在很长一段时间内改用haml,但最后,我会坚持使用erb并继续研究其他Rails问题。

您会注意到有关该主题的一些强烈意见。例如,Fernandez的Rails书籍仅使用haml,而敏捷的rails使用erb。找到最适合你的地方,但最好是在练习轨道后再做。

答案 2 :(得分:2)

HAML是一种HTML抽象。除了空白问题之外,它本身并没有改变你编写Ruby的方式。

答案 3 :(得分:2)

这一切都取决于您的工作流程。如果你有一个HTML人员将在HAML中执行他的HTML,那么这比使用静态HTML并将其转换为HAML更有用。我从HAML切换回ERB,因为将现有HTML转换为ERB的工作量少于将其转换为HAML的工作量。

答案 4 :(得分:1)

Haml是一个很棒的工具,我认为你不应该担心使用它。它使您的HTML更具可读性。它不需要在铁轨上学习核心红宝石。使用它并喜欢它。

答案 5 :(得分:1)

以下是我要做的事情:

  1. 如果您还不熟悉,请学习HTML

  2. 了解如何将erb与HTML结合使用。这可能需要30分钟。你只需将ruby代码放在< %%>中了如果要输出变量值,可以使用等号:<%=%>。真的没什么可说的。但正如其他人所说,你需要至少理解它是如何工作的,因为它在视图代码示例中如此广泛使用......它也用于yaml文件。

  3. 然后花几个小时学习HAML并使用它而不是erb。除了可能在javascript partials和yaml文件中使用erb之外,我在学习HAML之后从未想过使用它。

  4. IMO,HAML比写erb更清洁,更不容易出错并且更短。 HAML会为您关闭标记,因此您不必将它放在代码中,它会强制您正确编写缩进代码,并且它有一些很好的快捷方式,可以将类和ID添加到HTML标记中。

    我很想听听你们发现html.erb比html.haml好的任何用例。就像我说的那样,我不喜欢使用它的唯一地方是使用javascript代码......因为我发现缩进规则有时会妨碍它。

答案 6 :(得分:1)

我很早就开始使用HAML而且我非常喜欢它。虽然像所有工具一样,但它有其用途。一些快速点

  1. 不要忘记您可以在同一个项目中同时拥有HAML和ERB模板...只需更改扩展名即可更改使用的内容。您不必承诺一个或另一个。
  2. HAML不会改变模板的ruby / rails方面......只是HTML的表示,所以它不应该妨碍你的学习。
  3. HAML比ERB慢。虽然在大多数情况下这是微不足道的(对最终用户来说不明显),但是如果你有一部分要一遍又一遍地渲染,那就要记住了。
  4. 只是一些想法。

答案 7 :(得分:1)

因为这是4年前的问题我会保持我的答案简短,我只是想补充一点,HAML增加了一点点,使它更简洁,可读(imo),非常类似于coffeescript和python“styles”

- something.map do |x|
  - # ... x

VS

something.map do |x|
  # ... x
end

是的,您必须添加-的每一行,但这是因为它是模板引擎(和格式)。

另外要编写ruby,你有过滤器,所以你可以添加:ruby“块”。

:ruby
  a = 1+1
  multi = "line"
 %html
   %body
     / ...

而不是:

<%
  a = 1+1
  multi = "line"
%>
<html>
   <body> 
     <!-- ...

因为在没有结束语句的情况下尝试ruby只能通过安装修补版本的ruby来实现,haml已经在野外使用,而且苗条和玉石也很常见,haml只是前驱,但更多的是“close tags”vs“基于缩进”的风格和选择。