我越来越深入地涉足RoR开发。ERB对我来说不太合适。我曾经用JSP做过一次。即使逻辑是视图特定的,将Ruby代码嵌入到我的标记中似乎并不是一个好计划。也许我的担忧是没有根据的,但它感觉很危险。此外,需要输入大量内容。
我发现了HAML,并正在对其进行更多评估。如果它是一个很好的选择,也许你可以提供一些好的资源。
除了HAML之外,Rails视图层有哪些其他替代方案可用?
我的ERB担忧是否无端?
我越来越深入地涉足RoR开发。ERB对我来说不太合适。我曾经用JSP做过一次。即使逻辑是视图特定的,将Ruby代码嵌入到我的标记中似乎并不是一个好计划。也许我的担忧是没有根据的,但它感觉很危险。此外,需要输入大量内容。
我发现了HAML,并正在对其进行更多评估。如果它是一个很好的选择,也许你可以提供一些好的资源。
除了HAML之外,Rails视图层有哪些其他替代方案可用?
我的ERB担忧是否无端?
在模板中嵌入Ruby代码并不是问题。这使得Erb和Haml成为了强大的模板语言。实际上,许多模板语言之所以存在缺陷是因为它们的模板中没有代码(例如Django的模板语言)。
真正的问题有时候出现在开发人员将复杂的代码、拉取数据的代码、更新数据的代码或进行决策的代码嵌入到模板中。
Ruby和Rails为开发人员提供了巨大的能力和灵活性。开发人员需要负起责任,从控制器中检索数据,将复杂的代码移动到助手中等等。
<%= link_to edit_post_path(@post) do %>
Edit post "<%= @post.title %>"!!!
<% end %>
以上是简单的嵌入式Ruby代码,适用于视图。Haml版本如下:
= link_to edit_post_path(@post) do
Edit post "#{@post.title}"!!!
只要您保持代码简单,将任何复杂代码移入控制器或助手中,就可以了解决问题。请注意,Haml和Erb模板包含相同数量的嵌入式Ruby代码,唯一的区别是Haml丢弃所有的end
标记。如果你不喜欢在视图中使用Ruby,HAML也无法帮助你。虽然语法更加简洁,但它与ERB一样使用嵌入式Ruby。
如果您想完全避免视图中的逻辑,请查看类似Mustache这样的东西。它使用强调逻辑和表现分离的模板风格(无逻辑视图)。
和你一样,我也在Java中度过了一些时间,现在转向Rails(和Ruby)。当我看到ERB时,我有一种本能的反应,想起了在发现Velocity和Freemarker之前的糟糕的JSP时代。
无论如何,我正在研究两种可能会引起你兴趣的模板语言:
如果Handlerbars引起了你的兴趣,还要看看Handlerbars.rb。虽然还有至少一个同名项目,但这个项目不是Handlerbars的Ruby移植版,而是Handlerbars.js的Ruby封装器。所以它是“真正的Handlerbars”。