ruby-on-rails erb、haml或slim:你建议哪一个?为什么?[关闭]

zkure5ic  于 2023-04-22  发布在  Ruby
关注(0)|答案(5)|浏览(156)

就目前而言,这个问题不适合我们的问答形式。我们希望答案能得到事实、参考资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或深入讨论。如果您认为这个问题可以改进并可能重新开放,请visit the help center寻求指导。
9年前关闭。
我正在学习Rails,我看过这些模板引擎。我对它们没有经验(只有erb)。
但作为一个初学者,我真的很困惑。你建议哪一个?为什么?Erb,Haml或Slim?请告诉你喜欢其中一个的原因。如果你有任何其他建议,请让我们知道。
编辑:我并不是在寻找一个赢家,我只是想听听你对它们的看法,它们的语法,执行速度等等。

y0u0uwnf

y0u0uwnf1#

使用slim优于haml的两大优势:

  1. Slim目前比haml快8倍。
  2. Slim支持HTTP流,而HAML不支持。
  3. Slim有一个更自然的语法:a href="foo.html"
5w9g7ksd

5w9g7ksd2#

如果你有一个网页设计师,将工作在纯HTML,不知道haml或slim,ERB是很好的。这样,他们可以写HTML,你可以嵌入Ruby逻辑与适当的标签。
如果你同时使用HTML和ruby逻辑,或者你的设计师准备学习一些新的东西(比如HAML),我会选择HAML。它对ruby更友好,减少了很多字符数,比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)。

oyjwcjzk

oyjwcjzk3#

这是我的第一个想法

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
gkl3eglg

gkl3eglg4#

对我来说,问题归结为你宁愿把%放在每个标签之前,还是把|放在每个新文本块之前?
苗条:

tag(attr= "value")
  | text

Haml:

%tag{attr: "value"}
   text

还有一件事要注意:haml假定新行之间白色(删除haml中的空格),而slim假定没有空格(在Slim的此处和此处添加空格)

sd2nnvve

sd2nnvve5#

https://github.com/scalp42/hamlerbslim-是一个独立的基准测试,显示Slim和Erb是性能方面的赢家(Slim也倾向于减少HTML输出大小)。
我个人的意见是,总的来说,Slim和Haml将保存您的时间(==金钱)在维护方面,提供您有Haml/Slim精明的人照顾您的意见。
如果你没有这些人,Erb绝对是要走的路,因为尽管世界上有最好的意愿,有很多非常便宜的人可以使用HTML/Erb,但发现Haml/Slim完全是个谜。
最好的情况是,训练这些人使用Slim,或者至少让他们接触它,并保持“得到它”的人数。

相关问题