Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Haml ( HTML Abstraction Markup Language) - это система шаблонов, предназначенная для того, чтобы избежать написания встроенного кода в веб-документе и сделать HTML более чистым. Haml дает возможность иметь динамический контент в HTML. Подобно другим веб- языкам, таким как PHP , ASP , JSP, и системам шаблонов, таким как 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 подходящим для широкого круга приложений.

История [ править ]

Первоначально Haml был представлен Хэмптоном Кэтлином с его первоначальным выпуском в 2006 году, и его работа была продолжена несколькими другими людьми. [5] Его мотивом было сделать HTML проще, чище и проще в использовании. С 2006 года он несколько раз пересматривался и выходили новые версии. До 2012 года Натали Вайзенбаум была основным сопровождающим Haml, а затем Норман Кларк до 2015 года. [5] Натали работала над тем, чтобы сделать Haml пригодным для использования в приложениях Ruby , а брендинг и дизайн выполнял Ник Уолш. [5] В команду техобслуживания в настоящее время входят Мэтт Вильдиг, Акира Мацуда, Ти Пархам и Такаши Кокубун. [1]

История версий [ править ]

Версия 2.2.0 была выпущена в июле 2009 года с поддержкой Ruby 1.9 и Rails 2.0 или выше. [2] Версия 3.0.0 была выпущена в мае 2010 года с добавлением поддержки Rails 3 и некоторыми улучшениями производительности. Четвертая основная версия нарушила совместимость с предыдущими версиями, поддерживая только Rails 3 и Ruby 1.8.7 или выше, и ознаменовала переход на семантическое управление версиями. Несколько поправок, таких как повышение производительности, исправление нескольких предупреждений, совместимость с последними версиями Rails, исправления в документации и многое другое, были внесены в серию Haml 4. [2] Версия 5.0.0 была выпущена в апреле 2017 года. Она поддерживает Ruby 2.0.0 или выше и теряет совместимость с Rails 3. [2] « Трассировка » [6] добавлена ​​опция, которая помогает пользователям выполнять трассировку по шаблону Haml.

Особенности [ править ]

При разработке Haml были задействованы четыре принципа. [5]

Удобная разметка [ править ]

Язык разметки удобен для пользователя, если он соответствует следующим характеристикам:

  • Легко понять язык
  • Простота использования (реализация)

СУХОЙ [ править ]

Язык разметки должен соответствовать принципу «Не повторяйся» ( DRY ). Должно:

  • Избегайте ненужных повторений
  • Сосредоточьтесь на чистом коде

С хорошим отступом [ править ]

Язык разметки с хорошим отступом улучшает внешний вид, упрощает чтение для читателей, а также позволяет определить, где данный элемент начинается и заканчивается.

Четкая структура [ править ]

Язык разметки с четкой структурой поможет в сопровождении кода и логическом понимании конечного результата. Неясно, предлагает ли Haml какое-либо дифференциальное преимущество в этом отношении.

Примеры [ править ]

Разметка Haml по синтаксису похожа на CSS . Например, Haml имеет то же .представление классов через точку, что и CSS, что упрощает разработчикам использование этой разметки.

"Привет мир!" [ редактировать ]

Haml как инструмент командной строки [ править ]

Следующее эквивалентно, поскольку HAML распознает селекторы CSS :

% р { : класс  =>  "образец" ,  : идентификатор  =>  "Добро пожаловать" } Hello, World!
% p .sample #welcome Hello, World!

Они преобразуются в следующий HTML- код:

< p  class = "sample"  id = "welcome" > Привет, мир! </ p >

Haml как надстройка для Ruby on Rails [ править ]

Чтобы использовать Haml с Ruby , Ruby Gemfileдолжен включать эту строку:

драгоценный камень 'хамл'

Подобно eRuby , Haml также может обращаться к локальным переменным (объявленным в том же файле в коде Ruby). В этом примере используется образец файла контроллера Ruby. [7]

  • файл: app/controllers/messages_controller.rb
    class  MessagesController  <  ApplicationController  def  index  @message  =  "Hello, World!"  конец конец
  • файл: app/views/messages/index.html.haml
    # добро пожаловать  % p =  @message

Это дает:

< div  id = "welcome" >  < p > Привет, мир! </ p > </ div >

Haml как модуль Ruby [ править ]

Чтобы использовать Haml независимо от Rails и ActionView , установите haml gem , включите его Gemfileи просто импортируйте [Usage: require 'haml']в сценарий Ruby или вызовите интерпретатор Ruby с -rubygemsфлагом.

добро пожаловать  =  Haml :: Engine . new ( "% p Hello, World!" ) добро пожаловать . оказывать

Выход:

< p > Привет, мир! </ p >

Haml :: Engine - это класс Haml.

Базовый пример [ править ]

Haml использует отступы (два пробела) для вложения тегов и области видимости. Это действует как замена пар открытых тегов, делая его СУХИМ и чище. В следующем примере сравниваются синтаксисы Haml и eRuby (Embedded Ruby) вместе с выводом HTML.


Ключевые отличия:

  • У Haml нет начала и конца для каждого элемента, такого как eRuby.
  • Синтаксис eRuby очень похож на HTML и поэтому больше похож на HTML, тогда как Haml больше похож на CSS .
  • Haml использует отступы для вложения элементов тегов, тогда как eRuby использует то же представление HTML.
  • В Haml такие свойства, как class, idмогут быть представлены ., #соответственно, вместо обычного classи idключевыми словами. Haml также использует %для обозначения элемента HTML, а не <>как в eRuby.

Пример со встроенным кодом Ruby [ править ]

Примечание. Это простой пример предварительного просмотра, который может не отражать текущую версию языка.

!!! % HTML {  : XMLNS  =>  "http://www.w3.org/1999/xhtml" ,  : языки  =>  "ен" ,  "XML: Lang"  =>  "ан" }  % голову  % название BoBlog % мета { "HTTP-эквив"  =>  "Content-Type" ,  : содержание  =>  "текст / HTML, кодировка = UTF-8" }  % ссылка { "отн"  =>  "таблицы стилей" ,  "HREF"  =>  «main.css " ,  " тип "  =>  "text / css " }  % body #  header  % h1BoBlog % h2 Блог Боба #content  -  @entries . каждый  делать  | запись |  .entry  % h3 .title =  запись . title  % p .date =  запись . опубликовал . strftime ( "% A,% B% d,% Y" )  % p .body =  entry . body #  footer  % p Авторские права на все содержание принадлежат Бобу.

Вышеупомянутый Haml создаст этот XHTML :

<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html  lang = 'ru '  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 = "экран" rel = "Таблица стилей"  type = "text / css"  />  </ head >  < body >  < div  id = 'header' >  < h1 > BoBlog </ h1 >  < h2 > Блог Боба </ h2 >  </ div >  < div  id = 'content' >  < div  class = 'entry' >  <h3  class = 'title' >Хэллоуин </ h3 >  < p  class = 'date' > вторник, 31 октября 2006 г. </ p >  < p  class = 'body' > С Хеллоуином, славные читатели! Я собираюсь сегодня вечером на вечеринку ... Я очень взволнован. </ p >  </ div >  < div  class = 'entry' >  < h3  class = 'title' > Новый механизм шаблонов Rails </ h3 >  < p  class = 'date' > Пятница, 11 августа 2006 г. </ p >  < p  class = 'body' > Для Ruby on Rails выпущен очень крутой новый движок шаблонов. Это называется Хамл. </ p >  </ div >  </ div >  < div  id = 'footer' >  < p > Авторские права на все содержание принадлежат Бобу. </ 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
  • Python: HamlPy
  • Общий Лисп: cl-haml
  • Дротик: Харт
  • Java: JHaml
  • Lua: LuaHaml
  • .NET: NHaml
    • ASP.NET: MonoRail NHaml
  • Perl: Text :: Haml
  • Scala: масштабировать

См. Также [ править ]

  • BBCode
  • eRuby
  • Маркаби
  • Рубин
  • Рубин на рельсах
  • YAML
  • Sass - аналогичная система для CSS , также разработанная Кэтлином.
  • Мета-язык веб-сайтов - еще один язык шаблонов с аналогичными функциями
  • Веб-шаблон - общая концепция шаблона для расширения HTML

Ссылки [ править ]

  1. ^ a b c "GitHub" . Проверено 28 апреля 2018 . CS1 maint: обескураженный параметр ( ссылка )
  2. ^ a b c d "Список изменений" . Проверено 28 апреля 2018 . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ «Кодировка» . Проверено 29 января +2016 . CS1 maint: обескураженный параметр ( ссылка )
  4. ^ "Кодировки UTF" . Проверено 7 февраля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  5. ^ a b c d "О" . Проверено 28 апреля 2018 . CS1 maint: обескураженный параметр ( ссылка )
  6. ^ «Вариант трассировки в Haml» . Проверено 16 февраля +2016 . CS1 maint: обескураженный параметр ( ссылка )
  7. ^ "Использование Haml" . Проверено 7 февраля +2016 . CS1 maint: обескураженный параметр ( ссылка )

Внешние ссылки [ править ]

  • Официальный веб-сайт
    • Haml учебник
  • Выучить Haml (базовый уровень)
  • Haml на GitHub
  • phpHaml , реализация Haml для PHP
  • Haml Google Group
  • Haml 1.0 , объявление в официальном блоге Ruby on Rails