erb,haml或slim:你建议哪一个?为什么?

时间:2012-07-09 07:14:19

标签: ruby-on-rails haml erb slim-lang

我正在学习Rails,我看过这些模板引擎。我对他们没有经验(只有erb)。

但由于我是初学者,我真的很困惑。你建议哪一个?为什么? Erb,Haml还是Slim?请告诉你理由偏爱其他人。如果您有任何其他建议,请告诉我们。

编辑: 我不是在寻找胜利者。我只是想听听你对他们的看法,他们的语法,执行速度等等。

5 个答案:

答案 0 :(得分:80)

使用超薄haml的两大优势:

  1. Slim目前比haml快8倍。

  2. Slim支持HTTP流,而HAML则不支持。

  3. Slim的语法更自然:a href="foo.html"

答案 1 :(得分:63)

ERB很好,主要是如果你有一个网页设计师,它将使用纯HTML,并且不知道haml或slim。通过这种方式,他可以编写HTML,并且可以使用正确的标记嵌入ruby逻辑。

如果你同时处理HTML和ruby逻辑,或者你的设计师已经准备好学习新的东西(比如HAML),我会选择HAML。它比红宝石更友好,减少了字数,并且比ERB更具可读性。

例如(摘自官方HAML site):

在ERB中,您的视图将如下所示:

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>

在HAML中,它看起来像这样:

#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio

更干净!

至于HAML和SLIM之间的区别 - 我从未真正使用过SLIM,但我认为这是一个品味问题 - 看看这两种语法并决定哪种看起来更好看。我认为这两者之间没有明确的赢家(HAML / SLIM)。

答案 2 :(得分:32)

这是我的想法

<强> ERB

赞成

  • 默认开箱即用
  • 不依赖于空白区域
  • 最低的进入门槛(如果来自HTML)作为其HTML,其中包含Ruby代码
  • 大多数IDE的词法分析器默认读取它
  • DHH更喜欢
  • 旧版应用可能仍在使用

缺点

  • 更详细
  • 帮助者和视图中的content_for标签可能会很快失控
  • content_for标签使得嵌套标签更难,因为erb仅返回块中的最后一行。所以你必须追加一个字符串,然后返回它。

<强> HAML

赞成

  • 更简洁。没有关闭标签,适合较小的屏幕
  • 视觉清洁结构
  • 内置帮助程序(haml_concat,haml_capture)以在辅助方法中使用haml
  • 班级链接
  • 很多有用的句法糖,比如#为div或者。用于类链接,或:用于JS标记的javascript

缺点

  • 依赖于空白,这有时会导致一些难以理解的错误
  • 复杂标签通常需要采用“哈希”格式。 (虽然我实际上认为这是一个灵活的例子,对于有人开始它可能会很痛苦。)
  • 作为宝石添加(再次可能是将其作为骗局的延伸)
  • 设计师可能在调整时遇到一些问题
  • 除了一般的空格警告......简单的空白错误,例如。用于缩进的制表符和空格可能导致页面在生产中出错,而正常的规格/测试将无法捕获。道德:期望对视图测试有更大的需求,并且可能不会将haml用于任务关键视图,除非您确定测试正在测试视图的实际呈现。
  • 慢一点(比erb)
    • 警告:这是我们所讨论的ruby代码,如果速度是您的应用程序中的阻塞问题,则可以选择ruby,例如: Haskell的

答案 3 :(得分:17)

我的问题归结为您是希望在每个新标记之前放置%还是在每个新文本块之前放置|

超薄:

 tag(attr= "value")
  | text

Haml的:

 %tag{attr: "value"}
   text

需要注意的另一件事是:haml假定新行(remove whitespace in haml)之间有空格,而slim假定没有空格(在Slim herehere中添加空格)

答案 4 :(得分:15)

https://github.com/scalp42/hamlerbslim - 是一个独立的基准测试,将Slim和Erb显示为获胜者,性能明智(苗条也倾向于减少HTML输出大小。)

我个人认为,总的来说,Slim和Haml会在维护方面为您节省时间(==金钱),让您有Haml / Slim精明的人照顾您的观点。

如果你没有这些人,Erb肯定是要走的路,因为尽管世界上有最好的意愿,但是有很多非常便宜的人可以使用HTML / Erb,但是找到了Haml /修剪一个完整的谜。

最重要的是,培训这些人使用Slim或者至少让他们接触它,并保留“得到它”的人数。