2011-04-12 82 views
2

成为新的Ruby on Rails学生/开发人员的乐趣之一就是不断发现新宝石,让我的生活变得更有趣或更轻松。最近,我发现了“HAML”,这看起来是一个让ERB代码比以前更具可读性的绝佳工具。但是,我想知道对于像我这样的新开发人员来说,在早期拥抱像HAML这样的工具是否是一个好主意,或者如果在我的Ruby/Rails代码的熟练程度已经成熟之前再拖延下去会更聪明。我担心,我认为,过早地拥抱像HAML这样的工具可能会阻碍我通过它提供的编码“快捷方式”来充分理解Ruby。你有经验的编码员说什么?HAML是经验丰富的Ruby/Rails开发人员的更好工具吗?

+0

正如仅供参考,Perl的Mojo和Mojolicious,相当于Padrino和Sinatra,与HAML一起工作。 – 2011-04-12 20:35:39

回答

6

这并不是说采取HAML路线会为您提供一条捷径,因为它不像HAML抽象的东西(HTML除外),否则您可能会错过。 HAML是ERB的替代品,而不是抽象。

有人说,我认为这完全取决于你。如果你还没有学到,我会考虑两种情况,看看你更喜欢哪一种。我知道一些喜欢HAML的人,以及一些喜欢ERB的人。

还有一点需要指出的是ERB中有很多代码,因此至少获得ERB的一般要点有助于阅读其他代码。

+0

我现在更清楚地了解这颗宝石。感谢所有回复的人,并感谢我给予我的“noob”问题这么多建设性的帮助。我认为,现在,我会在HAML中延期,尽管它可能不会持续很长时间。我在HTML方面已经很有经验,所以看起来HAML会帮助我改进我的代码。有了这个说法,似乎@SpyrosP的评论是有针对性的:我现在可以利用我的时间学习更多有用的东西,然后把注意力集中在稍后美化我的代码上。 – 2011-04-12 17:57:33

+0

我同意你应该把时间放在其他更重要的概念上,然而选择HAML vs.再培训局(时间是正确的)完全取决于你。但是你似乎已经有了答案:) – 2011-04-12 18:04:47

+0

+1“HAML是替代ERB的,而不是抽象。” HAML有助于摆脱HTML中恼人的重复。模板能力与ERB类似,我根据项目来回跳转。 – 2011-04-12 20:30:46

3

我会为后者投票。至少现在,坚持我的看法是更好的做法。主要原因是您可以花时间学习更有成效的东西,比如测试,路由,REST和其他更重要的东西。

这也是一个品味问题。 Haml很好,但我发现erb相当不错,而且对于我需要做的事情来说非常棒。我也在考虑换用haml很长一段时间,但最后,我会坚持使用erb并继续研究其他Rails问题。

您会注意到该主题的一些强烈意见。例如,费尔南德斯的Rails book完全使用haml,而敏捷rails使用erb。找出最适合自己的方法,但最好是在练习一段时间后再做。

1

Haml是一个伟大的工具,我认为你不应该担心使用它。它使你的HTML更具可读性。它并没有从Rails的核心ruby中学习任何东西。使用它并且喜欢它。

2

HAML是一个HTML抽象。除了空白问题外,它不会改变你自己写Ruby的方式。

2

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

+0

+1,这是当我坚持ERB并且是一个项目/团队的决定。对于我自己的工作,或者如果我有一个熟悉HAML的人,那么我会使用HAML,因为我认为它更清洁,并且有更好的机会获得有效的HTML。 – 2011-04-12 20:32:59

+0

您是否使用过html2haml命令行工具?我用了几次,它似乎工作得很好。 – johnmcaliley 2011-04-13 02:48:05

+0

@cowboycoded - 问题不在于转换HTML,而是如果你希望你的HTML人能够在实现后编辑你的视图,说一个元素更新一个类或id。 – 2011-04-13 14:51:27

1

这里是我会做什么:

  1. 了解HTML,如果你还不知道它做好

  2. 了解如何使用ERB与HTML。这可能需要30分钟。你只需将代码放在<%%内,如果你想输出一个变量的值,你可以使用等号:<%=%>。真的没有太大的意义。但是和其他人一样,你至少需要了解它是如何工作的,因为它在视图代码示例中被广泛使用......并且它也被用在yaml文件中。

  3. 然后花几个小时学习HAML并用它代替erb。除了在JavaScript偏好和yaml文件中使用erb之外,在学习HAML之后,我从来没有想过使用它。

国际海事组织,HAML是方式更清洁,不太容易出错和比写erb短得多。 HAML为您关闭标签,因此您不必将其放入代码中,这会强制您编写正确缩进的代码,并且它有一些用于向HTML标记添加类和标识的优秀快捷方式。

我会有兴趣听到任何使用情况下,你们发现html.erb比html.haml更好。就像我说的,我不喜欢使用它的唯一地方是使用JavaScript代码......因为我发现缩进规则有时会遇到问题。

1

我很早就开始使用HAML,我非常喜欢它。尽管像所有工具一样,它也有其用途。一些快速点

  1. 别忘了你可以同时拥有HAML和ERB模板在同一个项目......只是扩展名更改为改变其使用。你不必承诺一个或另一个。
  2. HAML不会更改模板的ruby/rails一侧...只能表示HTML,所以它不应妨碍您的学习。
  3. HAML比ERB慢。虽然在大多数情况下这是微不足道的(对最终用户来说并不明显),但如果你有一部分将会一遍又一遍地渲染,那么请记住这一点。

只是一些想法。

1

因为这是问4yrs前,我会继续我的回答简短,我只是想补充一点,HAML增加indentaion的该位,使得它更简洁,可读性(IMO)和非常相似的CoffeeScript和蟒蛇“风格“

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

VS

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

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

此外写红宝石,你有过滤器,所以你可以只加:ruby“块”。而不是

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

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

因为试图红宝石没有结束语句是你只能通过安装红宝石的补丁版本做,也HAML已经在野外和两个纤细及使用玉也很常见,haml只是前身,但更多的是“密切的标签”vs“基于缩进”的风格和选择。

相关问题