成为新的Ruby on Rails学生/开发人员的乐趣之一是不断发现新的宝石,让我的生活更有趣或更轻松。最近,我“发现”了HAML,它似乎是使ERB代码比现有代码更具可读性的绝佳工具。但是,我想知道像我这样的新开发者是否应该尽早使用像HAML这样的工具,或者在我使用普通Ruby / Rails代码的专业知识成熟之前推迟更加聪明。我想,我担心的是过早使用像HAML这样的工具可能会阻碍我通过它提供的编码“快捷方式”对Ruby的全面理解。你有什么经验的编码员说的?
答案 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)
以下是我要做的事情:
如果您还不熟悉,请学习HTML
了解如何将erb与HTML结合使用。这可能需要30分钟。你只需将ruby代码放在< %%>中了如果要输出变量值,可以使用等号:<%=%>。真的没什么可说的。但正如其他人所说,你需要至少理解它是如何工作的,因为它在视图代码示例中如此广泛使用......它也用于yaml文件。
然后花几个小时学习HAML并使用它而不是erb。除了可能在javascript partials和yaml文件中使用erb之外,我在学习HAML之后从未想过使用它。
IMO,HAML比写erb更清洁,更不容易出错并且更短。 HAML会为您关闭标记,因此您不必将它放在代码中,它会强制您正确编写缩进代码,并且它有一些很好的快捷方式,可以将类和ID添加到HTML标记中。
我很想听听你们发现html.erb比html.haml好的任何用例。就像我说的那样,我不喜欢使用它的唯一地方是使用javascript代码......因为我发现缩进规则有时会妨碍它。
答案 6 :(得分:1)
我很早就开始使用HAML而且我非常喜欢它。虽然像所有工具一样,但它有其用途。一些快速点
只是一些想法。
答案 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“基于缩进”的风格和选择。