`

haml语法

    博客分类:
  • haml
阅读更多

引言

Haml 是一种简洁优美的模板语言,可以应用于Ruby on Rails、 PHP等Web开发平台,可以大大缩减模板代码,减少冗余,提高可读性。并且Haml是一种完备的模板语言,没有牺牲当前模板语言的任何特性。Haml由 Hampton Catlin发明并且开发了Ruby on Rails上的实现。本文将以Ruby on Rails中的Haml实现为例,帮助你了解Haml的基本语法和常用特性,让你领略到Haml带来的高效生产。

缩进嵌套

当嵌套结构变得复杂时,HTML代码一方面容易忘记添加结束标签,另一方面嵌套结构难以读懂。Haml中不需要结束标签,因为它借鉴了Python的语法,强制使用两个空白字符的缩进来表示代码的嵌套结构,既提高了代码的可读性,又避免了对结束标签的依赖。

%ul

 %li Salt

 %li Pepper

等价于

<ul>

<li>Salt</li>

<li>Pepper</li>

</ul>

自关闭标签用来关闭:

%br/

等价于:

<br />

Haml的缩进语法优点是:

1. Haml的强制缩进相当于从语言级别规定了代码的缩进规范,违反了这种规范的“灵活性”可以被看成是邪恶的£¬£¬没有缩进或者缩进乱七八糟的嵌套标签是这种灵活性的代价。Haml这种缩进的约束实际上让程序员从不同的缩进风格中解脱出来,关注更重要的事情。

2. 结束标签自标签语言诞生起就是一种冗余,IDE对于标签语言最常用的支持也就是结束标签的自动补全和嵌套标签的自动缩进。Haml致力于消除冗余。

HTML 属性

Haml用{}来设置HTML属性,{}中的内容被当作是Ruby Hash来解释,所以任何Ruby代码都可以被直接调用。例如:

%p{:class => cycle("odd", "even")} Hello

等价于

<p class = '<%= cycle("odd", "even")%>' > Hello </p>

重构重复代码时,往往要借助Helper方法。你也可以把一些HTML属性封装成Helper 方法,然后直接引用:

module ApplicationHelper

def image_src

{:src => 'hello.jpg'}

end

end

%img{image_src}/

被解释成:

<image src='hello.jpg' />

你也可以继续添加其他属性:

%img{image_src, :class => 'nice'}

CSS风格的id 和 class 属性

一个结构良好的HTML中,最常用的属性毫无疑问是 id 和 class。Haml借鉴了CSS的语法,简化了这两个属性的编写。基本的语法结构是:

%tagname#id.class

例如

%p#foo Hello

被解释成:

<p id='foo'> Hello </p>

如果你使用div标签,连tagname都可以省略。比如一个id属性为foo的div标签:

#foo Hello!

被解释成

<div id='foo'>Hello!</div>

同理

.nice Hello

被解释成

<div class='nice'> Hello </div>

也可以添加多个 class :

#foo.nice.light

插入代码

相对于RHTML,Haml的代码插入方式简洁得多。对于需要直接输出的代码,

Haml用 = 来代替 <%= ...%> 。比如:

%p

1 + 2 =

= 1 + 2

被解释成:

<p>

1 + 2 = 3

<p>

对于非输出的代码,用 - 符号来插入。不同于一般Ruby代码的是,就像Haml处理HTML标签一样,Haml中的Ruby代码块不需要关闭。比如:

- (1..3).each do |i|

%p= i

被解释成:

<p>

1

</p>

<p>

2

</p>

声明文档类型

XHTML的声明方式以啰唆而著称:

 <?xml version="1.0" encoding="utf-8" ?>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

如果你厌倦了每次Copy and Paste,可以尝试一下Haml的方式:

!!! XML

!!!

或者你喜欢 XHTML 1.1,就用:

!!! 1.1

来代替:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"

"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">结束语

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

 

分享到:
评论

相关推荐

    twig-haml-templating:WordPress 的 Twig 模板,使用 HAML 语法

    使用 HAML 语法和 Twig 编写您的主题模板; 您可以混合使用旧版 PHP 模板和 Twig+HAML 模板,因此如果您要将现有主题迁移到 Twig+HAML,则可以一次完成一个模板。 为了保持代码和模板整洁,您的 PHP 主题代码应该只...

    hamlet-compiler:Haml 的形式化语法

    这使得开发者能够在不离开Haml语法环境的情况下处理复杂的逻辑。 通过hamlet-compiler-master压缩包,我们可以获取hamlet-compiler的源代码,深入研究其内部实现。这包括解析器、编译器和数据绑定机制等关键组件,...

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

    - **与Blade、Twig等现代模板引擎比较**:虽然Blade和Twig也有其独特优势,但 MtHaml 的HAML语法提供了一种不同的编码风格,对于喜欢简洁、清晰代码的开发者来说更具吸引力。 ## 5. 学习和进阶 学习 MtHaml 需要...

    Laravel开发-laravel-blade-haml

    Laravel-blade-haml 扩展库将 HAML 语法转换为 Blade 模板,这样开发者可以在 Laravel 中享受 HAML 的简洁和 Blade 的便利。以下是如何使用这个扩展: 1. **安装**:首先,通过 Composer 安装 `mpociot/laravel-...

    让脚手架直接生成Haml模板

    5. **运行脚手架**:现在,当你运行`rails generate scaffold ResourceName`命令时,Rails将会生成使用Haml语法的模板文件。 标签中的“源码”意味着这涉及到对项目源代码的修改,而“工具”则表明我们正在讨论的是...

    HAMLCompiler-koala:用于 HAML 文件的考拉编译器

    通常,它会包含处理HAML语法的函数,以及读取和写入文件的I/O操作。文件名应该反映出编译器的特定名称,例如`HAMLCompiler-koala.js`。 3. `图标路径/compilerName.png`:这是一个可选的图标文件,用于在用户界面中...

    为什么要使用HAML和SASS

    它们通过简化的语法和增强的功能,降低了代码的复杂度,提高了开发速度,同时增强了代码的可维护性。开发者可以利用Rakefile或类似的自动化工具,将HAML和SASS文件编译成标准的HTML和CSS,方便浏览器理解和执行。 ...

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

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

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

    HAML 的核心特点在于其缩进式语法,它将HTML的嵌套结构以缩进的形式表示,去除了大量的冗余符号,如尖括号 `和 `&gt;`。例如,一个简单的 HTML 代码段: ```html 标题 内容 ``` 在 HAML 中会被转换为: ```haml ...

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

    为了使用这个项目,开发者需要了解Haml的基本语法,熟悉JavaScript和CoffeeScript,并且懂得如何在他们的前端项目中引入和使用外部库。同时,理解如何配置和运行构建工具也是必要的。对于希望提高前端开发效率,尤其...

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

    HAML(HTML Abstraction Markup Language)是一种简洁、清晰的HTML模板语言,它的语法比传统HTML更加简洁,减少了代码中的冗余,使得代码更易读、易写。HAML的主要特点包括缩进表示层级关系,%tagname创建元素,以及...

    iswsinatrahaml:基于 Sinatrahaml 的 ianscottwilson.com 版本

    总的来说,"iwsinatrahaml" 项目是 Ian Scott Wilson 使用 Ruby 的 Sinatra 框架和 Haml 语法构建的一个网站,其中结合了 JavaScript 进行前端交互,可能还包括数据库集成、路由设计、模板渲染等多种 web 开发技术。

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

    HAML(HTML Abstraction Markup Language)通过简洁、层次分明的语法,简化了HTML的编写。EWG HAML是Haml的一个变种,特别针对前端开发工作流进行了优化。它允许开发者以结构化的方式编写HTML,减少了代码中的冗余,...

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

    通过消除冗余,反映文档所表示的基础结构以及提供既强大又易于理解的优雅语法,它旨在使编写HTML文档变得更加轻松愉快。基本用法Haml可以从命令行使用,也可以作为Ruby Web框架的一部分使用。 第一步是安装gem: ...

    haml-coffee:Haml模板,您可以在其中编写内联CoffeeScript

    Haml Coffee模板 Haml Coffee是一个JavaScript模板解决方案,它使用作为标记...Sublime Text中.hamlc文件的语法突出显示。 节点JS grunt-haml用于使用Grunt的项目。 gulp-haml-coffee用于使用Gulp的项目。 hem-ham

    Go-Amber一个Go编程语言的优雅模板引擎灵感来自HAML和Jade

    HAML以其清晰的缩进和无HTML冗余著称,而Jade则以其简洁的语法和强大的功能受到开发者喜爱。Go-Amber融合了这两者的优点,为Go程序员提供了一个优雅且高效的模板解决方案。 1. **Go语言与模板引擎** Go语言,由...

    MtHaml, 多目标 HAML ( PHP,Twig,<your language here> ).zip

    MtHaml, 多目标 HAML ( PHP,Twig,&lt;your language here&gt; ) 多目标 HAML MtHaml是 HAML语言的一个PHP实现,它可以针对多种...mt实现与ruby完全相同的语法;惟一的区别是任何支持的语言都可以在HAML期望的代码中随处使用

    Ruby-Himl是一种基于HTML的Ruby缩进标记语言

    4. **强类型**:Haml的语法特性让错误更易于检测,因为错误的缩进或语法会导致编译错误。 在实际项目中,开发者可以通过安装`haml` gem来使用Haml。通过`haml`命令,可以将Haml文件编译成HTML。例如,对于名为`...

    HamlPy, 像模板一样的HAML变换器在 Django 模板中的应用.zip

    HamlPy, 像模板一样的HAML变换器在 Django 模板中的应用 HamlPy对于希望使用像syntax语法的的开发者来说,HamlPy ( 发音"Haml是一种工具。 HamlPy本身不是模板引擎,只是一个编译器,它将HamlPy文件转换成 Django ...

    scalate:Scalate是基于Scala的模板引擎,支持HAML,Mustache和JSP,Erb和Velocity样式语法

    Scalate是基于的模板引擎,它支持HAML,Mustache和JSP,Erb和Velocity样式语法。 支持以下模板语言: :是Java / Scala的Mustache模板语言:Haml / Scaml模板语言的翡翠风格 :提供Haml样式模板语言 :提供JSP,Erb...

Global site tag (gtag.js) - Google Analytics