`

关于HAML

阅读更多
HAML

HAML的作者Hampton认为:RoR作为一个革命性的Web开发框架,但是它的模板系统却依然延续了旧世界(ASP,PHP,JSP)的风格,这实在是让人难以接受,于是就有了HAML。



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,就让我们拭目以待吧!


简单明了的知识库
分享到:
评论

相关推荐

    为什么要使用HAML和SASS

    标题“为什么要使用HAML和SASS”涉及到的是前端开发中的两个重要工具——HAML(HTML Abstraction Markup Language)和SASS(Syntactically Awesome Style Sheets)。这两个工具都是为了提高HTML和CSS编码的效率和...

    MtHaml:PHP实现的HAML模板语言类库.zip

    $haml = new Haml(); $html = $haml-&gt;render('path/to/your/file.haml'); echo $html; ``` `MtHaml` 提供了一些自定义配置选项,如设置输出的 HTML 版本、开启或关闭 CSS 选择器支持等。通过调整这些配置,你可以...

    Ruby-Haml是一个HTML的模板引擎

    Haml是Ruby社区广泛采用的模板语言之一,因其简洁的缩进式语法而受到青睐。 **Haml的基本语法** 1. **缩进表示嵌套**:Haml中的元素通过空格或制表符来表示层级关系,与Python或Git的代码风格类似。每增加一个元素...

    前端项目-clientside-haml-js.zip

    3. **文档**:可能有关于如何集成到项目中的指南或API文档。 4. **构建工具**:如Grunt或Gulp的配置文件,用于构建和打包项目。 5. **许可证文件**:声明项目的开源许可条款。 为了使用这个项目,开发者需要了解...

    让脚手架直接生成Haml模板

    你可能需要在`app/views/scaffolds`目录下创建Haml版本的模板文件,如`index.haml`, `show.haml`, `new.haml`, `edit.haml`等,以便脚手架可以使用这些模板。 4. **使用插件**:有些Rails插件,如`haml-rails`,...

    MtHaml:PHP实现的HAML模板语言类库

    $haml = new \MTHaml\Haml(); $html = $haml-&gt;render('path/to/your/template.haml'); ``` ## 4. MtHaml与其他模板引擎的比较 - **与HTML模板比较**:HAML和 MtHaml 提供了更简洁的语法,减少了模板文件的体积,...

    Laravel开发-laravel-blade-haml

    **Laravel 开发:深入理解 Laravel Blade 和 HAML** 在 Laravel 框架中,Blade 是一个强大的模板引擎,它允许开发者以简洁且可读性强的语法编写视图。Blade 提供了 PHP 代码与 HTML 的无缝集成,使得在处理复杂的...

    haml:HTML抽象标记语言-标记Haiku

    将Haml与Rails一起使用要将Haml与Rails一起使用,只需将Haml添加到您的Gemfile中并运行bundle 。 gem 'haml' 如果您想用Haml替换基于Rails基于Erb的生成器,请将也添加到您的Gemfile中。格式化Haml的最基本元素是...

    ruby-haml-loader:使用实际Ruby`haml`的Webpack Haml加载器

    用于Webpack的Ruby Haml加载程序 将Haml文件作为模块导入Webpack项目中。 返回渲染的模板。 这很慢。 它是为临时使用而创建的,直到转换为Jade。 此自述文件基于自述文件。 设置 添加到您的webpack配置模块....

    haml-to-php:PHP的haml实现

    编写类似于ruby的haml实现的代码 在错误的标签嵌套上失败,例如table&gt; td&gt; tr 图书馆支持 请参阅如果您将对haml-to-php.com的支持添加到框架中,我想参考您的工作。 我知道的相关工作 请参阅此处。 最引人注目。 ...

    Haml2Html:一个易于使用的编译器,用于使用Haml&Sass开发静态页面

    用法将所有.haml文件保存在/app/views 将所有.sass文件保存在/app/styles 要观看文件运行(在终端中): ./watch要停止观看: Control + C就是这样! 所有已编译的Haml文件都存储在/compiled/ 所有已编译的Sass文件...

    前端开源库-ewg-haml-coffee-gulp

    "前端开源库-ewg-haml-coffee-gulp"是一个专为前端开发者设计的项目,它整合了三个重要的技术: EWG HAML、CoffeeScript 和 Gulp。 首先,让我们深入了解一下这三个核心组件: 1. **EWG HAML**: EWG HAML是一种...

    herbalizer:转换HAML到ERB

    用Haskell编写的HAML到ERB转换器。 该程序将模板转换为 。 为什么 很多人更喜欢HAML而不是ERB。 但不是每个人,也不是每个情况都如此。 ERB更简单,更容易记住规则,并且对HTML熟悉的人都可以访问。 ERB模板更易于...

    hamlet-compiler:Haml 的形式化语法

    《哈姆雷特编译器:Haml的形式化语法详解》 在Web开发领域,HTML作为标记语言,一直是构建网页的基础。然而,随着技术的发展,为了提高开发效率和代码的可读性,出现了许多预处理器,如Haml...

    s-ublime-text-haml-sass-master.zip

    "s-ublime-text-haml-sass-master.zip"这个压缩包文件显然是为Sublime Text 2设计的一个扩展资源,目的是为了增强其对HAML和SASS这两种语言的支持。 HAML(HTML Abstraction Markup Language)是一种简洁、清晰的...

    基于Ruby的Haml模板引擎设计源码

    本项目是基于Ruby的Haml模板引擎设计源码,包含149个文件,主要文件类型为rb、haml、xhtml、erb、x、md、gitignore、gitmodules、yml和yardopts。该项目适用于Haml模板引擎的开发和设计,为用户提供了一个丰富的资源...

    yii-haml:Yii 框架的 HAML 视图渲染器

    Yii 框架的 HAML 视图渲染器 yii-haml是扩展,它为您的视图带来了功能。 基于项目的分支。 使用 Composer 安装 将此添加到您的composer.json : " repositories " : [ { " type " : " composer " , " url " : ...

    gulp-ruby-haml:用于Gulp的Haml插件,使用Ruby Haml gem

    gulp-ruby-haml 这是一个,将使用该插件haml命令行脚本编译Haml的文件转换成HTML。 您需要同时安装Ruby和Haml才能使用此功能。 尝试gem install haml 。 如果使用 ,请将gem 'haml'添加到Gemfile中,然后运行bundle...

    haml-lint:编写干净且一致的HAML的工具

    HAML-Lint haml-lint是一种帮助保持文件清洁和可读的工具。 除了特定于 HAML 的样式和 lint 检查之外,它还与集成以将其强大的静态分析工具带到您的 HAML 文档中。 您可以从命令行手动运行haml-lint ,也可以将其...

    jekyll-haml-markup:用于haml标记的Jekyll插件

    杰基尔·哈姆尔(Jekyll Haml Markup) 插件,使成为布局,局部和页面的标记选项。 安装 添加到您的Gemfile: gem 'jekyll-haml-markup' , group : :jekyll_plugins 用法 用.haml扩展名命名布局,分页和页面。 该...

Global site tag (gtag.js) - Google Analytics