haml
创建: 2019/05/23
文档: http://haml.info/docs/yardoc/file.REFERENCE.html
安装 |
|
安装 |
gem "haml"
|
纯文本 | |
所有不带固有符号的都作为纯文本 |
|
html也作为纯文本 | |
转义字符 |
直接输出后面的 %title = @title \= @title 输出为 <title> MyPage = @title </title>
|
html标签 | |
标签名以 % 开始 |
%table#data
%tbody
%tr
%td= '@data'
相当于 <table class="data"> <tbody> <tr> <td>数据</td> </tr> </tbody> </table>
|
属性 {} 或 () |
● {} 直接作为ruby的hash, 故可用所有ruby语法 - 也可以使用返回hash的方法(多个方法的话从左到右被 merge ) def html_attrs(lang = 'en-US') {:xmlns => "http://www.w3.org/1999/xhtml", 'xml:lang' => lang, :lang => lang} end # haml %html{html_attrs('fr-fr')}
- 前缀 嵌套进hash里 {data: {sample: 1, test: 2}} # => data-sample="1" data-test="2"
● () 内部插值: #{} %span(class="widget_#{@widget.number}")
|
class, id |
若传入数组, 则先删除false的元素, 再 flatten ● class(简化方法为.) 若为数组, 先flatten再 join " " ● id(简化方法为#) 若为数组, 先flatten再 join "_"
例 %div{id: %w(a b c), class: %w(a b c)} 123 解释为 <div class="a b c" id="a_b_c"> 123 </div>
|
默认元素 |
如果只指定class/id, 则为div .sample a 相当于 %div.sample a 相当于 <div class="sample"> a </div>
|
关闭不带内容的标签 |
/ 例 %br/
|
Whitespace Removal: > and < | |
Object Reference: [] | |
doctype:!!! | |
注释 | |
/ | 多行注释靠缩进 |
-# | 多行注释靠缩进 |
插入ruby | |
插入ruby = |
= , 输出结果, 相当于 <%= ... %> 例: = link_to 'sample', root_path ● 多行 每一行都以 , 来结束
|
- |
- , 不输出结果, 相当于 <% ... %>
|
代码块 |
ruby代码块不需要end - (1..100).each do |i| %span= "a: #{i}" %span= "b: #{i}" %br/
|
Whitespace Preservation: ~ | |
插值 #{} |
除了文字里, 也可以放在纯文本里 - (1..100).each do |i| %span a: #{i} %span b: #{i} %br/
|
Gotchas | |
Escaping HTML: &= | |
Unescaping HTML: != | |
Filters |