ветчина
![]() | Эта статья содержит контент, написанный как реклама . ( Июль 2017 г. ) |
Парадигма | Шаблонизатор |
---|---|
Разработано | Хэмптон Кэтлин |
Разработчики | Натали Вайзенбаум (в прошлом), Норман Кларк , Мэтт Уилдиг , Акира Мацуда , Ти Парэм [1] |
Стабильная версия | 6.3.0 [2] ![]() |
Язык реализации | Руби |
ТЫ | Кросс-платформенный |
Лицензия | Лицензия MIT и Unspace Interactive [1] |
Расширения имен файлов | .ветчина |
Веб-сайт | часто |
Haml ( язык абстракционной разметки HTML ) — это система шаблонов , разработанная для того, чтобы избежать написания встроенного кода в веб-документе и сделать HTML более чистым. Подобно другим системам шаблонов, таким как eRuby , Haml также встраивает некоторый код, который выполняется во время выполнения, и генерирует HTML-код для предоставления некоторого динамического контента. Для запуска кода Haml файлы должны иметь Расширение .haml . Эти файлы похожи на файлы .erb или .eRuby, которые также помогают встраивать код Ruby при разработке веб-приложения .
При анализе комментариев к коду Haml использует те же правила, что и Ruby 1.9 или новее. Haml понимает только ASCII -совместимые кодировки, такие как UTF-8 , но не UTF-16 или UTF-32 , поскольку они несовместимы с ASCII . [3] [4]
Haml можно использовать в командной строке , как отдельный модуль Ruby или в приложении Ruby on Rails .
История
[ редактировать ]Haml был первоначально представлен Hampton Catlin с его первым выпуском в 2006 году, и его работу подхватили еще несколько человек. [5] Его целью было сделать HTML более простым, понятным и удобным в использовании. С 2006 года он несколько раз пересматривался и выпускались новые версии. До 2012 года основным сопровождающим Haml была Натали Вайценбаум, а до 2015 года ее сменил Норман Кларк. [5] Натали работала над тем, чтобы сделать Haml пригодным для использования в приложениях Ruby , а брендингом и дизайном занимался Ник Уолш. [5]
Версия 2.2.0 была выпущена в июле 2009 года с поддержкой Ruby 1.9 и Rails 2.0 или выше. [6] Версия 3.0.0 была выпущена в мае 2010 года, в нее добавлена поддержка Rails 3 и некоторые улучшения производительности. Четвертая основная версия нарушила совместимость с предыдущими версиями, поддерживая только Rails 3 и Ruby 1.8.7 или выше, и ознаменовала переход на семантическое управление версиями. В серию Haml 4 было внесено несколько изменений, таких как повышение производительности, исправление нескольких предупреждений, совместимость с последними версиями Rails, исправления в документации и многое другое. [6] Версия 5.0.0 была выпущена в апреле 2017 года. Она поддерживает Ruby 2.0.0 или выше и лишена совместимости с Rails 3. [6] « След » [7] Добавлена опция, которая помогает пользователям выполнять трассировку по шаблону Haml.
Примеры
[ редактировать ]Разметка Haml по синтаксису похожа на CSS . Например, у Haml есть такая же точка .
представление классов, как это делает CSS.
"Привет, мир!"
[ редактировать ]Haml как инструмент командной строки
[ редактировать ]Следующие действия эквивалентны, поскольку HAML распознает селекторы CSS :
%p{:class => "sample", :id => "welcome"} Hello, World!
%p.sample#welcome Hello, World!
Они визуализируются в следующий HTML- код:
<p class="sample" id="welcome">Hello, World!</p>
Haml как дополнение к Ruby on Rails
[ редактировать ]Haml можно интегрировать в Ruby on Rails в качестве плагина. Подобно eRuby , Haml также может получать доступ к локальным переменным (объявленным в том же файле в коде Ruby). В этом примере используется образец файла контроллера Ruby. [8]
- файл:
app/controllers/messages_controller.rb
class MessagesController < ApplicationController def index @message = "Hello, World!" end end
- файл:
app/views/messages/index.html.haml
#welcome %p= @message
Это означает:
<div id="welcome">
<p>Hello, World!</p>
</div>
Haml как модуль Ruby
[ редактировать ]Haml также можно использовать независимо как библиотеку Ruby .
welcome = Haml::Engine.new("%p Hello, World!")
welcome.render
Выход:
<p>Hello, World!</p>
Haml::Engine — это класс Haml.
Базовый пример
[ редактировать ]Haml использует отступы пробелов (два пробела) для вложенности тегов и области видимости, заменяя пары открытых тегов. В следующем примере сравниваются синтаксисы Haml и eRuby (встроенный Ruby) вместе с выводом HTML.
ветчина | Еврорадио | 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>
|
Ключевые отличия:
- В Haml нет открывающих и закрывающих тегов для каждого элемента, как в eRuby .
- Синтаксис eRuby очень похож на HTML и, следовательно, больше похож на HTML, тогда как Haml больше похож на CSS .
- Haml использует отступы для вложения элементов тегов, тогда как eRuby использует то же HTML-представление.
- В таких свойствах Haml, как
class
,id
может быть представлено.
,#
соответственно вместо штатногоclass
иid
ключевые слова. Хамл также использует%
чтобы указать элемент 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 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 Rails и Merb , но реализация Ruby также работает независимо. Haml можно легко использовать вместе с другими языками. Ниже приведен список языков, на которых есть реализации Haml:
- Руби: хамлит
- PHP: Fammel , pHAML , phamlp , phpHaml (PHP 5), HAML-TO-PHP (PHP 5), многоцелевой HAML (PHP 5.3).
- Javascript: haml-js
- Питон: HamlPy
- Общий Лисп: cl-haml
- Дротик: Сердце
- Java: JHaml
- Второй: СекондХамл
- .NET: Нхамл
- ASP.NET: MonoRail NHaml
- Perl: Текст::Haml
- Масштаб: Восхождение
См. также
[ редактировать ]- BBCode
- eRuby
- Шипби
- Руби
- Рубин на рельсах
- ЯМЛ
- Sass — аналогичная система для CSS , также разработанная Catlin.
- Мета-язык веб-сайта - еще один язык шаблонов с аналогичными функциями.
- Веб-шаблон – общая концепция шаблона HTML. расширения
Ссылки
[ редактировать ]- ^ Jump up to: а б «ГитХаб» . Гитхаб . Проверено 28 апреля 2018 г.
- ^ «Выпуск 6.3.0» . 10 декабря 2023 г. Проверено 19 декабря 2023 г.
- ^ «Кодировка» . Проверено 29 января 2016 г.
- ^ «Кодировки UTF» . Гитхаб . Проверено 7 февраля 2016 г.
- ^ Jump up to: а б с "О" . Проверено 28 апреля 2018 г.
- ^ Jump up to: а б с «Журнал изменений» . Гитхаб . Проверено 28 апреля 2018 г.
- ^ «Опция трассировки в Haml» . Проверено 16 февраля 2016 г.
- ^ «Использование Haml» . Проверено 7 февраля 2016 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Изучите Haml (базовый)
- Хамл на GitHub
- phpHaml , реализация Haml для PHP
- Группа Google Хамла
- Haml 1.0 , анонс в официальном блоге Ruby on Rails