【问题标题】:Is HAML a Better Tool for Experienced Ruby/Rails Developers?对于有经验的 Ruby/Rails 开发人员来说,HAML 是一个更好的工具吗?
【发布时间】:2011-04-12 17:08:51
【问题描述】:

成为一名新的 Ruby on Rails 学生/开发人员的乐趣之一是不断发现新的 Gem,让我的生活更有趣或更轻松。最近,我“发现”了 HAML,它似乎是一个非常棒的工具,可以让 ERB 代码比现在更具可读性。但是,我想知道对于像我这样的新开发人员来说,尽早采用像 HAML 这样的工具是否是一个好主意,或者等到我在纯 Ruby/Rails 代码方面的专业知识成熟之前,是否会更聪明。我想我担心的是,过早采用像 HAML 这样的工具可能会阻碍我通过它提供的编码“快捷方式”来完全理解 Ruby。你有经验的编码员怎么说?

【问题讨论】:

  • 仅供参考,Perl 的 Mojo 和 Mojolicious(相当于 Padrino 和 Sinatra)与 HAML 一起使用。

标签: ruby-on-rails ruby haml


【解决方案1】:

采用 HAML 路线并不会为您提供捷径,因为它不像 HAML 正在抽象您可能会错过的任何内容(HTML 除外)。 HAML 是 ERB 的替代品,而不是抽象。

话虽如此,我认为这完全取决于您。如果你还没有学过,我会同时研究一下,看看你更喜欢哪一个。我知道有些人喜欢 HAML,有些人喜欢 ERB。

要指出的另一件事是,ERB 中有很多代码,因此至少了解 ERB 的一般要点将有助于阅读其他代码。

【讨论】:

  • 我现在对这颗宝石的理解更清楚了。感谢所有回答的人,也感谢给我的“菜鸟”问题提供了如此多的建设性帮助。我认为,目前,我将在 HAML 中推迟,尽管可能不会很长时间。我在 HTML 方面已经非常有经验了,所以看起来 HAML 将帮助我改进我的代码。话虽如此,@SpyrosP 的评论似乎是有目标的:我现在可以利用我的时间学习更有成效的东西,然后将注意力集中在美化我的代码上。
  • 我同意您应该将时间集中在其他更重要的概念上,但是选择 HAML 与 ERB(时机成熟时)完全取决于您。但是你似乎已经有了答案:)
  • +1 "HAML 是 ERB 的替代品,而不是抽象。" HAML 有助于摆脱 HTML 中烦人的重复。模板功能与 ERB 非常相似,我根据项目来回跳转。
【解决方案2】:

我会投票给后者。在我看来,最好坚持使用 erb,至少现在是这样。主要原因是您可以将时间用于学习更有成效的东西,例如测试、路由、REST 和其他更重要的东西。

这也是一个品味问题。 Haml 很好,但我发现 erb 也很好,非常适合我需要做的事情。我也想改用haml很长一段时间,但最后我还是坚持用erb,继续研究其他Rails问题。

您会注意到关于该主题的一些强烈意见。例如,Fernandez 的 Rails 书只使用了 haml,而敏捷 Rails 使用了 erb。找到最适合你的,但最好在练习一段时间后再做。

【讨论】:

    【解决方案3】:

    HAML 是一种 HTML 抽象。除了空格问题之外,它不会改变您编写 Ruby 本身的方式。

    【讨论】:

      【解决方案4】:

      这也完全取决于您的工作流程。如果您有一个 HTML 人会在 HAML 中编写他的 HTML,那将比采用静态 HTML 并将其转换为 HAML 更有用。我从 HAML 切换回 ERB,因为将现有 HTML 转换为 ERB 比将其转换为 HAML 的工作量少。

      【讨论】:

      • +1,这是我坚持使用 ERB 并且是项目/团队决定的时候。对于我自己的工作,或者如果我有一个研究 HAML 的人,那么我会使用 HAML,因为我认为它更干净,并且更有可能获得有效的 HTML。
      • 你用过html2haml命令行工具吗?用了几次,感觉还不错。
      • @cowboycoded - 问题不仅在于转换 HTML,还在于如果您希望 HTML 人员能够在实现视图后编辑您的视图,比如更新一个类或元素上的 id。
      • 我明白你的意思。如果是这样的话,使用 erb 是有意义的。
      【解决方案5】:

      Haml 是一个很棒的工具,我认为您不必担心使用它。它使您的 HTML 更具可读性。它不会从核心 ruby​​ on rails 学习中拿走任何东西。使用它并爱上它。

      【讨论】:

        【解决方案6】:

        我会这样做:

        1. 如果您还不太了解 HTML,请学习它

        2. 了解如何在 HTML 中使用 erb。这可能需要你 30 分钟。您只需将 ruby​​ 代码放入 中,如果您想输出变量的值,您可以使用等号:。真的没什么。但是就像其他人说的那样,您至少需要了解它是如何工作的,因为它在视图代码示例中被广泛使用......并且它也被用于 yaml 文件中。

        3. 然后花几个小时学习 HAML 并使用它来代替 erb。除了可能在 javascript 部分和 yaml 文件中使用 erb 之外,我在学习 HAML 后从未考虑过使用它。

        IMO,HAML 比编写 erb 更干净,更不容易出错,而且时间更短。 HAML 为您关闭标签,因此您不必将其放入代码中,它会强制您编写正确缩进的代码,并且它有一些很棒的快捷方式可以将类和 ID 添加到 HTML 标签。

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

        【讨论】:

          【解决方案7】:

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

          1. 不要忘记,您可以在同一个项目中同时拥有 HAML 和 ERB 模板...只需更改扩展名以更改使用的模板。您不必承诺其中之一。
          2. HAML 不会更改模板的 ruby​​/rails 方面...只是 HTML 的表示,因此它不会妨碍您的学习。
          3. HAML 比 ERB 慢。虽然在大多数情况下这无关紧要(最终用户不会注意到),但如果您有一个要反复渲染的部分,请记住这一点。

          只是一些想法。

          【讨论】:

            【解决方案8】:

            正如 4 年前提出的那样,我将保持简短的回答,我只想补充一点,HAML 增加了一点缩进,使其更加简洁、可读 (imo) 并且非常类似于 coffeescript 和 python“样式”

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

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

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

            还要编写 ruby​​,你有过滤器,所以你可以添加 :ruby "blocks"。

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

            代替:

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

            因为尝试不带 end 语句的 ruby​​ 只能通过安装 ruby​​ 的补丁版本来完成,haml 也已经在野外使用,slim 和jade 也很常见,haml 只是先驱,但更多的是“关闭标签”与“基于缩进”的样式和选择。

            【讨论】:

              猜你喜欢
              • 2012-08-01
              • 2010-10-29
              • 1970-01-01
              • 2011-06-30
              • 2010-11-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多