fbpx
维基百科

Haml

HamlHTML Abstraction Markup Language,HTML抽象标记语言)是一种模板系统,它可以避免在Web文档中内嵌代码,使HTML更简易和干净。Haml为HTML中提供了一些动态内容的灵活性。类似其他Web语言(如PHPASPJSP)和模板系统(如eRuby),Haml也嵌入一些在运行时执行的代码并生成HTML代码,从而提供一些动态内容。为运行Haml代码,文件需要采用.haml扩展名。这些文件类似.erb或eRuby文件,这有助于在开发网络应用程序时嵌入Ruby代码。在解析代码注释时,Haml采用与Ruby 1.9或之后版本相同的规则。Haml只能理解兼容ASCII的编码(例如UTF-8),而不能理解不兼容ASCII的UTF-16UTF-32[4][5]Haml可以在命令行界面中使用,也可以作为一个单独的Ruby模块或在一个Ruby on Rails应用程序中使用,这使Haml可用于广泛的应用程序。

Haml
编程范型模板引擎英语Template engine (web)
設計者Nick Walsh
實作者
  • Norman Clarke
  • Matt Wildig
  • Akira Matsuda
  • Tee Parham
  • Natalie Weizenbaum
当前版本
  • 6.1.2 (2023年8月12日;穩定版本)[1]
實作語言Ruby
操作系统跨平台
許可證
  • MIT许可证
  • Unspace Interactive[2]
文件扩展名.haml
網站haml.info

历史 编辑

Haml最早由Hampton Catlin英语Hampton Catlin于2006年发布,它的成果领先于其他几个人。他的动机是使HTML更简单、清晰和易于使用。自2006年以来,它已随新版本发布而多次修订。2012年4月,Haml的维护由Norman Clarke接手。[6]Natalie Weizenbaum致力于使Haml可以在Ruby应用程序中使用,而品牌与设计则由Nick Walsh完成。目前的维护团队中还有Matt Wildig、Akira Matsuda和Tee Parham。[2]

版本历史 编辑

特性 编辑

Haml的发展有四项原则。

用户友好的标记 编辑

置标语言如果遵循下列特征,那么它则用户友好:

  • 语言能轻松理解
  • 使用便捷(其实现)

DRY 编辑

标记语言应坚持不重复自身(DRY)原则。它应该:

  • 避免不必要的重复
  • 专注于干净的代码

精巧缩进 编辑

有良好缩进的标记语言可以改善外观、使阅读器易于读取,并有助确定元素的开始与结束位置。

清晰结构 编辑

有清晰结构的标记语言有助于代码维护和理解最终结果的逻辑。Haml在这方面是否提供了有差异的优势,这点尚不清晰。

例子 编辑

Haml标记在语法上类似CSS。例如,Haml同样使用.(点)表示CSS的类,使开发人员可以轻松使用这种标记。

Hello, World例子 编辑

Haml的最简单的Hello World实现像是这样:

Haml作为命令行工具 编辑

%p{:class => "sample", :id => "welcome"} Hello, World! 

得到这样的HTML代码:

<p class="sample" id="welcome">Hello, World!</p> 

为运行Haml代码,必须已安装,如使用下列命令 Hamlgem安装:[7]

gem install haml 

Haml代码若以Hello.haml为文件名保存,则可以这样运行:

haml Hello.haml 

Haml作为Ruby on Rails附加项 编辑

要用Ruby使用Haml,Ruby的Gemfile应该包含此行:

gem 'haml' 

类似eRuby,Haml也可以访问局部变量(在同一个文件中以Ruby代码声明)。此例子使用一个Ruby控制器文件为例。

  • file: app/controllers/messages_controller.rb
    class MessagesController < ApplicationController  def index  @message = "Hello, World!"  end end 
  • file: app/views/messages/index.html.haml
    #welcome  %p= @message 

将得到:

<div id="welcome"> <p>Hello, World!</p> </div> 

Haml作为Ruby模块 编辑

要独立于Rails和ActionView(页面存档备份,存于互联网档案馆)使用Haml,安装haml gem,在Gemfile中包含它,然后简单的在Ruby脚本中导入[Usage: require 'haml'],或者以-rubygems标志调用Ruby直譯器

welcome = Haml::Engine.new("%p Hello, World!") welcome.render 

输出:

<p>Hello, World!</p> 

Haml::Engine(页面存档备份,存于互联网档案馆)是一个Haml类。

基本例子 编辑

Haml使用空格缩进(两个空格)来表示标签的嵌套和识别给定标签的范围。这取代打开、闭合的标签对系统,从而符合DRY并使其看上去更清晰(容易阅读)。下列例子展示了Haml与eRuby(嵌入式Ruby)的差异。

Haml ERB
%div.category  %div.recipes  %h1= recipe.name  %h3= recipe.category  %div  %h4= recipe.description 
<div class="category"> <div class="recipes"> <h1><%= recipe.name %></h1> <h3><%= recipe.category %></h3> </div> <div> <h4><%= recipe.description %></h4> </div> </div> 

由上述代码示例呈现的HTML代码如下所示:

<div class="category"> <div class="recipes"> <h1>Cookie</h1> <h3>Desserts</h3> </div> <div> <h4>Made from dough and sugar. Usually circular in shape and has about 400 calories.</h4> </div> </div> 

两者的关键差异是:

  • Haml不像eRuby那样,每个元素都有开始与结束
  • eRuby语法看上去很像、更像HTML,而Haml更像CSS
  • Haml使用缩进来嵌套标签元素,而eRuby使用与HTML相同的表示法
  • 在Haml属性中,classid可以用.#表示classid关键字。Haml使用%标示一个HTML元素,而eRuby中使用<>

嵌入Ruby代码的例子 编辑

注意:这是一个简单的预览示例,可能不能体现此语言的目前版本。

!!! %html{ :xmlns => "http://www.w3.org/1999/xhtml", :lang => "en", "xml:lang" => "en"}  %head  %title BoBlog  %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}  %link{"rel" => "stylesheet", "href" => "main.css", "type" => "text/css"}  %body  #header  %h1 BoBlog  %h2 Bob's Blog  #content  - @entries.each do |entry|  .entry  %h3.title= entry.title  %p.date= entry.posted.strftime("%A, %B %d, %Y")  %p.body= entry.body  #footer  %p  All content copyright © Bob 

上述Haml产生这个XHTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'> <head> <title>BoBlog</title> <meta content='text/html; charset=utf-8' http-equiv='Content-Type' /> <link href="/stylesheets/main.css" media="screen" rel="Stylesheet" type="text/css" /> </head> <body> <div id='header'> <h1>BoBlog</h1> <h2>Bob's Blog</h2> </div> <div id='content'> <div class='entry'> <h3 class='title'>Halloween</h3> <p class='date'>Tuesday, October 31, 2006</p> <p class='body'> Happy Halloween, glorious readers! I'm going to a party this evening... I'm very excited. </p> </div> <div class='entry'> <h3 class='title'>New Rails Templating Engine</h3> <p class='date'>Friday, August 11, 2006</p> <p class='body'> There's a very cool new Templating Engine out for Ruby on Rails. It's called Haml. </p> </div> </div> <div id='footer'> <p> All content copyright © Bob </p> </div> </body> </html> 

实现 编辑

Haml的官方实现已经以Ruby插件形式内置在Ruby on RailsMerb英语Merb中,该Ruby实现也能够独立使用。Haml可以轻松配合其他语言使用。下列是各种语言对Haml的实现:

参见 编辑

  • BBCode
  • eRuby
  • Markaby英语Markaby
  • Ruby
  • Ruby on Rails
  • YAML
  • Sass – 一种类似的面向CSS的系统,也是由Catlin设计。
  • 网站元语言英语Website Meta Language – 另一种有类似功能的模板语言
  • Web模板英语Web template

参考资料 编辑

  1. ^ Release 6.1.2. 2023年8月12日 [2023年9月18日]. 
  2. ^ 2.0 2.1 GitHub. [30 January 2016]. (原始内容于2017-04-27). 
  3. ^ Change Log. [2020-11-30]. (原始内容于2015-01-05). 
  4. ^ Encoding. [29 January 2016]. (原始内容于2017-05-29). 
  5. ^ UTF encodings. [7 February 2016]. (原始内容于2019-02-16). 
  6. ^ History. [29 January 2016]. (原始内容于2017-05-27). 
  7. ^ Using Haml. [7 February 2016]. (原始内容于2017-05-29). 

外部链接 编辑

haml, 此條目翻譯自其他語言維基百科, 需要相關領域的編者協助校對翻譯, 如果您精通本領域, 又能清楚地將來源語言翻譯為中文, 歡迎您協助校訂翻譯, 原文参见维基数据, 此條目需要补充更多来源, 2017年5月24日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而被移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像, 以检查网络上是否存在该主题的更多可靠来源, 判定指引, html, abstraction, markup, langua. 此條目翻譯自其他語言維基百科 需要相關領域的編者協助校對翻譯 如果您精通本領域 又能清楚地將來源語言翻譯為中文 歡迎您協助校訂翻譯 原文参见维基数据 此條目需要补充更多来源 2017年5月24日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 Haml 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 Haml HTML Abstraction Markup Language HTML抽象标记语言 是一种模板系统 它可以避免在Web文档中内嵌代码 使HTML更简易和干净 Haml为HTML中提供了一些动态内容的灵活性 类似其他Web语言 如PHP ASP JSP 和模板系统 如eRuby Haml也嵌入一些在运行时执行的代码并生成HTML代码 从而提供一些动态内容 为运行Haml代码 文件需要采用 haml扩展名 这些文件类似 erb或eRuby文件 这有助于在开发网络应用程序时嵌入Ruby代码 在解析代码注释时 Haml采用与Ruby 1 9或之后版本相同的规则 Haml只能理解兼容ASCII的编码 例如UTF 8 而不能理解不兼容ASCII的UTF 16与UTF 32 4 5 Haml可以在命令行界面中使用 也可以作为一个单独的Ruby模块或在一个Ruby on Rails应用程序中使用 这使Haml可用于广泛的应用程序 Haml编程范型模板引擎 英语 Template engine web 設計者Nick Walsh實作者Norman Clarke Matt Wildig Akira Matsuda Tee Parham Natalie Weizenbaum当前版本6 1 2 2023年8月12日 穩定版本 1 實作語言Ruby操作系统跨平台許可證MIT许可证 Unspace Interactive 2 文件扩展名 haml網站haml wbr info 目录 1 历史 1 1 版本历史 2 特性 2 1 用户友好的标记 2 2 DRY 2 3 精巧缩进 2 4 清晰结构 3 例子 3 1 Hello World例子 3 1 1 Haml作为命令行工具 3 1 2 Haml作为Ruby on Rails附加项 3 1 3 Haml作为Ruby模块 3 2 基本例子 3 3 嵌入Ruby代码的例子 4 实现 5 参见 6 参考资料 7 外部链接历史 编辑Haml最早由Hampton Catlin 英语 Hampton Catlin 于2006年发布 它的成果领先于其他几个人 他的动机是使HTML更简单 清晰和易于使用 自2006年以来 它已随新版本发布而多次修订 2012年4月 Haml的维护由Norman Clarke接手 6 Natalie Weizenbaum致力于使Haml可以在Ruby应用程序中使用 而品牌与设计则由Nick Walsh完成 目前的维护团队中还有Matt Wildig Akira Matsuda和Tee Parham 2 版本历史 编辑特性 编辑Haml的发展有四项原则 用户友好的标记 编辑 置标语言如果遵循下列特征 那么它则用户友好 语言能轻松理解 使用便捷 其实现 DRY 编辑 标记语言应坚持不重复自身 DRY 原则 它应该 避免不必要的重复 专注于干净的代码精巧缩进 编辑 有良好缩进的标记语言可以改善外观 使阅读器易于读取 并有助确定元素的开始与结束位置 清晰结构 编辑 有清晰结构的标记语言有助于代码维护和理解最终结果的逻辑 Haml在这方面是否提供了有差异的优势 这点尚不清晰 例子 编辑Haml标记在语法上类似CSS 例如 Haml同样使用 点 表示CSS的类 使开发人员可以轻松使用这种标记 Hello World例子 编辑 Haml的最简单的Hello World实现像是这样 Haml作为命令行工具 编辑 p class gt sample id gt welcome Hello World 得到这样的HTML代码 lt p class sample id welcome gt Hello World lt p gt 为运行Haml代码 必须已安装 如使用下列命令 Haml以gem安装 7 gem install haml Haml代码若以Hello haml为文件名保存 则可以这样运行 haml Hello haml Haml作为Ruby on Rails附加项 编辑 要用Ruby使用Haml Ruby的Gemfile应该包含此行 gem haml 类似eRuby Haml也可以访问局部变量 在同一个文件中以Ruby代码声明 此例子使用一个Ruby控制器文件为例 file app controllers messages controller rbclass MessagesController lt ApplicationController def index message Hello World end end file app views messages index html haml welcome p message将得到 lt div id welcome gt lt p gt Hello World lt p gt lt div gt Haml作为Ruby模块 编辑要独立于Rails和ActionView 页面存档备份 存于互联网档案馆 使用Haml 安装haml gem 在Gemfile中包含它 然后简单的在Ruby脚本中导入 Usage require haml 或者以 rubygems标志调用Ruby直譯器 welcome Haml Engine new p Hello World welcome render输出 lt p gt Hello World lt p gt Haml Engine 页面存档备份 存于互联网档案馆 是一个Haml类 基本例子 编辑 Haml使用空格缩进 两个空格 来表示标签的嵌套和识别给定标签的范围 这取代打开 闭合的标签对系统 从而符合DRY并使其看上去更清晰 容易阅读 下列例子展示了Haml与eRuby 嵌入式Ruby 的差异 Haml ERB div category div recipes h1 recipe name h3 recipe category div h4 recipe description lt div class category gt lt div class recipes gt lt h1 gt lt recipe name gt lt h1 gt lt h3 gt lt recipe category gt lt h3 gt lt div gt lt div gt lt h4 gt lt recipe description gt lt h4 gt lt div gt lt div gt 由上述代码示例呈现的HTML代码如下所示 lt div class category gt lt div class recipes gt lt h1 gt Cookie lt h1 gt lt h3 gt Desserts lt h3 gt lt div gt lt div gt lt h4 gt Made from dough and sugar Usually circular in shape and has about 400 calories lt h4 gt lt div gt lt div gt 两者的关键差异是 Haml不像eRuby那样 每个元素都有开始与结束 eRuby语法看上去很像 更像HTML 而Haml更像CSS Haml使用缩进来嵌套标签元素 而eRuby使用与HTML相同的表示法 在Haml属性中 class id可以用 和 表示class和id关键字 Haml使用 标示一个HTML元素 而eRuby中使用 lt gt 嵌入Ruby代码的例子 编辑注意 这是一个简单的预览示例 可能不能体现此语言的目前版本 html xmlns gt http www w3 org 1999 xhtml lang gt en xml lang gt en head title BoBlog meta http equiv gt Content Type content gt text html charset utf 8 link rel gt stylesheet href gt main css type gt text css body header h1 BoBlog h2 Bob s Blog content entries each do entry entry h3 title entry title p date entry posted strftime A B d Y p body entry body footer p All content copyright c Bob上述Haml产生这个XHTML lt DOCTYPE html PUBLIC W3C DTD XHTML 1 0 Transitional EN http www w3 org TR xhtml1 DTD xhtml1 transitional dtd gt lt html lang en xml lang en xmlns http www w3 org 1999 xhtml gt lt head gt lt title gt BoBlog lt title gt lt meta content text html charset utf 8 http equiv Content Type gt lt link href stylesheets main css media screen rel Stylesheet type text css gt lt head gt lt body gt lt div id header gt lt h1 gt BoBlog lt h1 gt lt h2 gt Bob s Blog lt h2 gt lt div gt lt div id content gt lt div class entry gt lt h3 class title gt Halloween lt h3 gt lt p class date gt Tuesday October 31 2006 lt p gt lt p class body gt Happy Halloween glorious readers I m going to a party this evening I m very excited lt p gt lt div gt lt div class entry gt lt h3 class title gt New Rails Templating Engine lt h3 gt lt p class date gt Friday August 11 2006 lt p gt lt p class body gt There s a very cool new Templating Engine out for Ruby on Rails It s called Haml lt p gt lt div gt lt div gt lt div id footer gt lt p gt All content copyright c Bob lt p gt lt div gt lt body gt lt html gt 实现 编辑Haml的官方实现已经以Ruby插件形式内置在Ruby on Rails和Merb 英语 Merb 中 该Ruby实现也能够独立使用 Haml可以轻松配合其他语言使用 下列是各种语言对Haml的实现 hamlit Ruby 页面存档备份 存于互联网档案馆 HamlPy Python 页面存档备份 存于互联网档案馆 LuaHaml Lua 页面存档备份 存于互联网档案馆 MonoRail NHaml ASP NET NHaml NET 页面存档备份 存于互联网档案馆 Fammel PHP HAML TO PHP PHP5 pHAML PHP 页面存档备份 存于互联网档案馆 phamlp PHP 页面存档备份 存于互联网档案馆 phpHaml PHP5 页面存档备份 存于互联网档案馆 Multi target HAML PHP5 3 页面存档备份 存于互联网档案馆 haml js JavaScript 页面存档备份 存于互联网档案馆 Text Haml Perl 页面存档备份 存于互联网档案馆 Scalate Scala JHaml Java 页面存档备份 存于互联网档案馆 Hart Dart 页面存档备份 存于互联网档案馆 cl haml Common Lisp 页面存档备份 存于互联网档案馆 参见 编辑BBCode eRuby Markaby 英语 Markaby Ruby Ruby on Rails YAML Sass 一种类似的面向CSS的系统 也是由Catlin设计 网站元语言 英语 Website Meta Language 另一种有类似功能的模板语言 Web模板 英语 Web template 参考资料 编辑 Release 6 1 2 2023年8月12日 2023年9月18日 2 0 2 1 GitHub 30 January 2016 原始内容存档于2017 04 27 Change Log 2020 11 30 原始内容存档于2015 01 05 Encoding 29 January 2016 原始内容存档于2017 05 29 UTF encodings 7 February 2016 原始内容存档于2019 02 16 History 29 January 2016 原始内容存档于2017 05 27 Using Haml 7 February 2016 原始内容存档于2017 05 29 外部链接 编辑官方网站 nbsp Haml tutorial 页面存档备份 存于互联网档案馆 Learn Haml basic 页面存档备份 存于互联网档案馆 GitHub上的Haml phpHaml 页面存档备份 存于互联网档案馆 面向PHP的Haml实现 Haml Google讨论组 页面存档备份 存于互联网档案馆 Haml 1 0 页面存档备份 存于互联网档案馆 Ruby on Rails博客上的公告 取自 https zh wikipedia org w index php title Haml amp oldid 63128262, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。