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

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

但是因为我是初学者,所以我很困惑。 你build议哪一个?为什么? Erb,Haml还是Slim? 请说出你比较喜欢的理由。 如果您有其他build议,请告诉我们。

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

ERB是好的,主要是如果你有一个网页devise师,将纯HTML工作,不知道哈姆或苗条。 这样他可以写HTML,你可以embeddedruby的逻辑与正确的标签。

如果你同时使用HTML和ruby逻辑,或者你的devise师准备学习新的东西(比如HAML),我会去HAML。 它比ruby更友好,减less了字符数,比ERB更可读。

例如(从官方HAML网站获取 ):

在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)。

使用slim over haml的两大优点:

  1. Slim目前比haml快八倍。

  2. Slim支持HTTPstream媒体,而HAML则不支持。

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

在我头顶,这是我想出来的

ERB

优点

  • 默认开箱即用
  • 不依赖于空白空间
  • 最低的入门障碍(如果来自HTML),因为它的HTML代码被撒在了Ruby代码中
  • 大多数IDE的词法分析器默认读取它
  • DHH更喜欢它
  • 传统应用程序可能仍在使用它

缺点

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

HAML

优点

  • 更简洁。 没有结束标签,适合较小的屏幕
  • 视觉清洁的结构
  • 已经build立了帮助程序(haml_concat,haml_capture)来使用帮助程序中的haml
  • class级链接
  • 很多有用的语法糖,比如div或者。 用于类链接,或者:用于JS标签的javascript

缺点

  • 空白依赖,这使得一些硬错误有时弄清楚
  • 复杂的标签通常需要诉诸“散列”格式。 (虽然我实际上认为这是一个很好的灵活性的例子,开始可能是一个痛苦的人。)
  • 添加为一个gem(也可能是一个延伸把这个作为一个骗局)
  • devise师可能会有一些麻烦调整
  • 除了一般的空白警告…简单的空白错误,例如。 制表符和空格用于缩进,可能导致页面在生产过程中出错,正常的规格/testing将无法捕捉。 道德:除非你确定你的testing正在testing视图的实际渲染,否则期望对视图testing有更大的需求,并且可能不要使用haml作为任务关键视图。
  • 比erb慢
    • 警告:这是我们正在谈论的ruby代码,如果速度是在你的应用程序中的阻塞问题有ruby的替代品,例如哈斯克尔

对我来说,问题归结为你是否希望在每个标记或|之前放置% 在每一个新的文本块之前?

瘦:

  tag(attr= "value") | text 

HAML:

  %tag{attr: "value"} text 

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

https://github.com/scalp42/hamlerbslim-是一个独立的基准testing,显示Slim和Erb为赢家,性能明智(瘦身也倾向于减lessHTML输出的大小。);

我个人的观点是,整体而言,Slim和Haml会节省你的时间(==钱)在维护方面,让你有Haml / Slim精明的人照顾你的意见。

如果你没有这些人,Erb肯定是要走的路,因为尽pipe世界上最好的意愿,有很多非常便宜的人可以使用HTML / Erb,但findHaml / Slim一个完整的神秘。

最好的情况是,训练这些人使用Slim或至less暴露他们,并保持那些“得到它”的人数。

Interesting Posts