关于HAML

HAML
[img]http://haml.hamptoncatlin.com/images/lukas/hamllogo.gif[/img]
[url=http://haml.hamptoncatlin.com/]HAML[/url]的作者Hampton认为:RoR作为一个革命性的Web开发框架,但是它的模板系统却依然延续了旧世界(ASP,PHP,JSP)的风格,这实在是让人难以接受,于是就有了HAML。

[img]http://haml.hamptoncatlin.com/images/lukas/main_showdownill.gif[/img]

HAML相比RHTML最大的优点就是结构更清晰,代码更优美,并且生成页面完全兼容XHTML,下面就让我们通过一个例子来看看HAML是如何工作的吧:

首先,你需要为你的Rails应用安装HAML插件:

./script/plugin install http://svn.hamptoncatlin.com/haml/tags/stable


然后修改你的RHTML文件后缀为HAML(比如app/view/people/index.rhtml改为app/view/people/index.haml)。

如果你的文件是通过scaffold_resource生成的,那么它看起来可能是这个样子:

<h1>Listing people</h1>
<table>
<tr>
<th>Name</th>
<th>Age</th>
</tr>
<% for person in @people %>
<tr>
<td><%=h person.name %></td>
<td><%=h person.age %></td>
<td><%= link_to 'Show', person_path(person) %></td>
<td><%= link_to 'Edit', edit_person_path(person) %></td>
<td><%= link_to 'Destroy', person_path(person), :confirm => 'Are you sure?', :method => :delete %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New person', new_person_path %>


使用HAML进行改写后它看起来是这个样子:

%h1 Listing people
%table
%tr
%th Name
%th Age
- for person in @people
%tr
%td= person.name
%td= person.age
%td= link_to('Show', person_path(person))
%td= link_to('Edit', edit_person_path(person))
%td= link_to('Destroy', person_path(person), :confirm => 'Are you sure?', :method => :delete)
- end
%br
= link_to('New person', new_person_path)


注意,由于HAML使用缩进来控制HTML的层次,因此前面的空格是不可少的,且必须按2的倍数递增,这是强制的,因为这使模板的层次看起来更为清晰。

这个例子多少有些简单(没有涉及CSS),更详细的用法请参看官方指南(也很简单,一个20分钟左右的小指南,但是很全面,这不矛盾,因为HAML本身就不复杂)。

不过,很多人可能会担心效率问题,因为简单的表现往往意味着复杂的后台处理,事实也的确如此,因为HAML相比RHTML要进行更多的处理,因此 HAML 很难做到比RHTML更快,所以问题的关键就在于你能不能承受由此造成的性能下降,目前最新版本的HAML(1.7)大约只比RHTML慢30%左右,并且HAML的作者Hampton说他们正在努力使HAML的性能在2.0版本中超越RHTML,就让我们拭目以待吧!


[url=http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html]简单明了的知识库[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值