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的两大优点:
-
Slim目前比haml快八倍。
-
Slim支持HTTPstream媒体,而HAML则不支持。
-
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暴露他们,并保持那些“得到它”的人数。