我正在学习Rails,看到了这些模板引擎。我只有erb的使用经验。
但作为一个初学者,我真的很困惑。你建议使用哪个,为什么?Erb、Haml还是Slim?请告诉我们您偏爱某个的原因。如果您有其他推荐,请告诉我们。
编辑: 我不是在寻求哪个更好的答案。我只是想听听您对它们、它们的语法、执行速度等方面的意见。
我正在学习Rails,看到了这些模板引擎。我只有erb的使用经验。
但作为一个初学者,我真的很困惑。你建议使用哪个,为什么?Erb、Haml还是Slim?请告诉我们您偏爱某个的原因。如果您有其他推荐,请告诉我们。
编辑: 我不是在寻求哪个更好的答案。我只是想听听您对它们、它们的语法、执行速度等方面的意见。
使用Slim相对于HAML的两个优点:
Slim目前大约比HAML快8倍。
Slim支持HTTP流式传输,而HAML不支持。
Slim具有更自然的语法:a href="foo.html"
如果你有一个只会编写普通 HTML 而不懂 HAML 或 Slim 的网页设计师,那么 ERB 是很好的选择。这样他们就可以编写 HTML,并且你可以使用正确的标签嵌入 Ruby 逻辑。
如果你同时处理 HTML 和 Ruby 逻辑,或者你的设计师愿意学习一些新东西(如 HAML),我会选择 HAML。它更加友好于 Ruby,字符数大大减少,比 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)之间有绝对的胜者。
a href="foo"
。 - Mohamad我脑海中的想法是这样的:
ERB:
优点
缺点
HAML
优点
缺点
对我而言,问题在于你更愿意在每个标签前面加上%
还是在每个新的文本块前面加上|
?
Slim:
tag(attr= "value")
| text
Haml:
%tag{attr: "value"}
text
还有一件需要注意的事情:haml假设在换行之间存在空格(去除Haml中的空格),而Slim则假设没有空格(在Slim中添加空格,请参见此处和此处)。
|
,而不是 %
来标记。标签比字面文本块多得多。在 slim 中,一个小但语义上的胜利是,任何带有 <>
标签的原始文本都要在前面加上显式的 |
。我更喜欢“除非你用 |
明确表示它是字面意思,否则一切都是 slim”,而不是“除非你用 %
表示它是 haml,否则一切都是字面意思”。 - ahnbizcadattr="value"
),而Haml更像Ruby(类似于Hash的{key: "value"}
)。 - Franklin Yuhttps://github.com/scalp42/hamlerbslim是一个独立的基准测试,显示Slim和Erb在性能方面表现最佳(同时,Slim倾向于降低HTML输出大小)。
我个人的看法是,总体而言,如果您有Haml/Slim的专业人员来管理视图,这将节省您的时间(==金钱)。
如果没有这些人,那么Erb绝对是最好的选择,因为无论怎样,都可以找到许多能够使用HTML/Erb工作但完全不了解Haml/Slim的人。
在最好的情况下,要训练这些人使用Slim或至少让他们接触它,并保留那些“懂它”的人数。