Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2011-09-13) haml – rails的新view层模板

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

http://haml-lang.com

表现层是一个web框架中最重要,却又最被忽视的一层。人们把精力都放在了MC,后台部分已经很完善了,但是前台V,即表现层,却一直没有太多改进。对于表现层,人们总希望"页面中不要嵌入逻辑代码,内容要与样式分离”,但是由于难度大,或者后台语言的限制,这个目标很难达到。可以说,我之前见过用过的大多数表面层,做的都不太好,如jsp, asp, php, velocity, freemarker, rails erb等等。

而haml的出现,则让我有了一点惊喜:内容跟样式分离得如此彻底,代码却又如此清晰。虽然对于纯美工MM来说,不是个好消息(完全无法使用dreamweaver等工具),但对于程序员来说,却是非常的贴心。

初看下,这种模板语言有点怪异,没有出现一个html tag,写起来好像在写配置文件。但是很快就会发现,没有了众多html tag的打扰,可以如此专注的把精力放在内容上,完全不用考虑样式,的确可以让开发效率大大提高。内容全部交给haml,样式全部交给css,各司其职。这种大胆前卫的设计,真的是非常具有想像力。

贴段代码:

#profile
  .left.column
  #date= print_date
  #address= current_user.address
.right.column
  #email= current_user.email
  #bio= current_user.bio

它将被解析为:

<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.emil}</div>
  <div id="bio">${current_user.bio}</div>
</div>

对比上下两段,是否觉得前面的代码更让人把注意力集中在内容上?

comments powered by Disqus