Haml - Haml
Paradigma | Motor de template |
---|---|
Projetado por | Hampton Catlin |
Desenvolvedores | Natalie Weizenbaum (passado), Norman Clarke , Matt Wildig , Akira Matsuda , Tee Parham |
Versão estável | 5.1.2 / 6 de agosto de 2019
|
Linguagem de implementação | Rubi |
SO | Plataforma cruzada |
Licença | Licença MIT e Unspace Interactive |
Extensões de nome de arquivo | .haml |
Local na rede Internet | haml |
Haml ( HTML Abstraction Markup Language) é um sistema de modelos projetado para evitar a escrita de código embutido em um documento da web e tornar o HTML mais limpo. Haml oferece a flexibilidade de ter algum conteúdo dinâmico em HTML. Semelhante a outras linguagens da web como PHP , ASP , JSP e sistemas de template como eRuby , Haml também incorpora algum código que é executado durante o tempo de execução e gera código HTML para fornecer algum conteúdo dinâmico. Para executar o código Haml , os arquivos precisam ter uma extensão .haml . Esses arquivos são semelhantes aos arquivos .erb ou eRuby, que também ajudam a incorporar o código Ruby durante o desenvolvimento de um aplicativo da web .
Enquanto analisa os comentários de codificação, Haml usa as mesmas regras do Ruby 1.9 ou posterior. Haml entende apenas codificações compatíveis com ASCII, como UTF-8, mas não UTF-16 ou UTF-32, porque não são compatíveis com ASCII .
O Haml pode ser usado na linha de comando , como um módulo Ruby separado ou em um aplicativo Ruby on Rails , tornando o Haml adequado para uma ampla variedade de aplicativos.
História
Haml foi originalmente apresentado por Hampton Catlin com seu lançamento inicial em 2006 e seu trabalho foi levado adiante por algumas outras pessoas. Seu motivo era tornar o HTML mais simples, limpo e fácil de usar. Desde 2006, ele foi revisado várias vezes e novas versões foram lançadas. Até 2012, Natalie Weizenbaum foi o mantenedor principal do Haml, seguido por Norman Clarke até 2015. Natalie trabalhou para tornar o Haml utilizável em aplicativos Ruby , enquanto a marca e o design eram feitos por Nick Walsh. Outros que estão atualmente na equipe de manutenção são Matt Wildig, Akira Matsuda, Tee Parham e Takashi Kokubun.
Histórico de versão
A versão 2.2.0 foi lançada em julho de 2009 com suporte para Ruby 1.9 e Rails 2.0 ou superior. A versão 3.0.0 foi lançada em maio de 2010, adicionando suporte para Rails 3 e algumas melhorias de desempenho. A quarta versão principal quebrou a compatibilidade com as versões anteriores, suportando apenas Rails 3 e Ruby 1.8.7 ou superior, e marcou a mudança para versionamento semântico. Várias alterações como aumento de desempenho, correção de alguns avisos, compatibilidade com as últimas versões do Rails, correções na documentação e muito mais foram feitas na série Haml 4. A versão 5.0.0 foi lançada em abril de 2017. Ele suporta Ruby 2.0.0 ou superior e descarta a compatibilidade com Rails 3. Uma opção de ' trace ', que ajuda os usuários a realizar o rastreamento no template Haml, foi adicionada.
Recursos
Quatro princípios estiveram envolvidos no desenvolvimento do Haml.
Marcação amigável
A linguagem de marcação é amigável se aderir aos seguintes recursos:
- Fácil de entender o idioma
- Fácil de usar (implementação)
SECO
A linguagem de marcação deve aderir ao princípio Don't repeat yourself ( DRY ). Deveria:
- Evite repetições desnecessárias
- Foco no código limpo
Bem recortado
A linguagem de marcação com bom recuo melhora a aparência, facilita a leitura para os leitores e também para determinar onde um determinado elemento começa e termina.
Estrutura clara
Linguagem de marcação com uma estrutura clara ajudará na manutenção do código e compreensão lógica do resultado final. Não está claro se Haml oferece alguma vantagem diferencial a esse respeito.
Exemplos
A marcação Haml é semelhante ao CSS na sintaxe. Por exemplo, Haml tem a mesma .
representação de pontos para classes que CSS, tornando mais fácil para os desenvolvedores usarem essa marcação.
"Olá Mundo!"
Haml como ferramenta de linha de comando
Os itens a seguir são equivalentes ao reconhecimento de seletores CSS por HAML :
%p{:class => "sample", :id => "welcome"} Hello, World!
%p.sample#welcome Hello, World!
Eles são processados no seguinte código HTML :
<p class="sample" id="welcome">Hello, World!</p>
Haml como um complemento para Ruby on Rails
Para usar Haml com Ruby , o Ruby Gemfile
deve incluir esta linha:
gem 'haml'
Semelhante ao eRuby , Haml também pode acessar variáveis locais (declaradas no mesmo arquivo no código Ruby). Este exemplo usa um arquivo de controlador Ruby de amostra.
- Arquivo:
app/controllers/messages_controller.rb
class MessagesController < ApplicationController def index @message = "Hello, World!" end end
- Arquivo:
app/views/messages/index.html.haml
#welcome %p= @message
Isso renderiza para:
<div id="welcome">
<p>Hello, World!</p>
</div>
Haml como um módulo Ruby
Para usar Haml independente de Rails e ActionView , instale haml
gem , inclua-o Gemfile
e simplesmente importe [Usage: require 'haml']
-o no script Ruby ou invoque o interpretador Ruby com -rubygems
flag.
welcome = Haml::Engine.new("%p Hello, World!")
welcome.render
Saída:
<p>Hello, World!</p>
Haml :: Engine é uma classe Haml.
Exemplo básico
Haml usa recuo de espaço em branco (dois espaços) para aninhamento de tag e escopo. Isso atua como um substituto para os pares de tags de extremidade aberta, tornando-o SECO e mais limpo. O exemplo a seguir compara as sintaxes de Haml e eRuby (Embedded Ruby), junto com a saída HTML.
Haml | ERB | HTML |
---|---|---|
%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>
|
<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>
|
As principais diferenças são:
- Haml não tem início e fim para cada elemento como eRuby
- A sintaxe do eRuby se parece muito com HTML e, portanto, é mais semelhante a HTML, enquanto Haml é mais semelhante a CSS .
- Haml usa recuo para aninhar elementos de tag, enquanto eRuby usa a mesma representação HTML
- Em Haml, propriedades como
class
,id
podem ser representadas por.
,#
respectivamente , em vez de regularclass
eid
palavras - chave. Haml também usa%
para indicar um elemento HTML em vez de<>
eRuby.
Exemplo com código Ruby incorporado
Observação: este é um exemplo de visualização simples e pode não refletir a versão atual do idioma.
!!!
%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
O Haml acima produziria este 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>
Implementações
A implementação oficial do Haml foi construída para Ruby com plug-ins para Ruby on Rails e Merb , mas a implementação do Ruby também funciona de forma independente. Haml pode ser facilmente usado junto com outras línguas. Abaixo está uma lista de linguagens em que Haml tem implementações:
- Ruby: hamlit
- PHP: Fammel , pHAML , phamlp , phpHaml (PHP 5), HAML-TO-PHP (PHP 5), HAML multi-alvo (PHP 5.3)
- Javascript: haml-js
- Python: HamlPy
- Lisp comum: cl-haml
- Dart: Hart
- Java: JHaml
- Lua: LuaHaml
- .NET: NHaml
- ASP.NET: MonoRail NHaml
- Perl: Texto :: Haml
- Escala: Escalar
Veja também
- BBCode
- eRuby
- Markaby
- Rubi
- Ruby on Rails
- YAML
- Sass - um sistema semelhante para CSS , também projetado por Catlin.
- Site Meta Language - outra linguagem de template com funcionalidades semelhantes
- Modelo da Web - conceito geral de modelo para expansão de HTML
Referências
links externos
- Website oficial
- Aprenda Haml (básico)
- Haml no GitHub
- implementação de phpHaml , Haml para PHP
- Grupo Haml Google
- Haml 1.0 , anúncio no weblog oficial do Ruby on Rails