Неудобно редактировать ERb/EEx шаблоны? Попробуйте Slim/Slime

от автора

ERb — стандартный язык разметки в мире Ruby. Это html со вставками на Ruby. В мире Elixir ту же роль выполняет EEx. Такой же синтаксис, только вместо Ruby — Elixir. Вот как это выглядит:

<!DOCTYPE html> <html>   <head>     <title>Заголовок</title>     <meta name="keywords" content="template <%= language_name %>">     <meta name="author" content="<%= user_name %>">   </head>   <body>     <h1 class="page-header"><%= page_header %></h1>     <div id="content">       <p><%= page_content %></p>       Дополнительный текст.     </div>   </body> </html>

То же самое можно написать в 1.5 раза короче без потери читаемости.

Встречайте: язык разметки Slim и его Elixir-аналог Slime:


Прошу прощенья за картинку вместо текста, Хабр неправильно подсвечивает Slim.

Особенности

  • Вложенность управляется отступами. Всё равно ведь форматируете код;
  • Сокращённый синтаксис для айдишников и классов;
  • Если название тега не указано, подставится div;
  • Атрибуты можно по желанию обрамлять либо не обрамлять скобками:

    meta name="author" meta[name="author"] meta(name="author") meta{name="author"}

  • Поддерживается текстовыми редакторами. Вообще, без подсветки синтаксиса slim’ом было бы невозможно пользоваться: названия тегов и их содержимое сливались бы. А с подсветкой всё ок.
  • Есть интеграция с популярными фреймворками (Rails, Sinatra, Phoenix);
  • Работает быстро. Здесь бенчмарк от 2014 года. Показывается, что Slim чуть медленнее Erb (Slime работает со скоростью EEx).

Как перевести проект на Slim?

Есть онлайн-конвертер; подойдёт, если темплейтов не много. Есть гем html2slim, который сконвертирует все темплейты проекта:

$ gem install html2slim $ erb2slim app/views

Как перевести проект на Slime?

Программистов на Elixir’е меньше, чем рубистов (кстати, как их называть, «эликсиристы»?). Slime используется и того реже. В общем, когда я, поплевавшись часик на EEx, пошёл искать реализацию Slim, обнаружил экосистему Slime в незрелом состоянии. Т.е. сам язык работал, с фениксом отлично интегрировался, но общее впечатление было как от клавиатуры с западающей клавишей.

Что ж, это opensource. Закатив рукава, я добавил поддержку Slime в Sublime Text, улучшил официальный сайт языка (slime-lang.com) и сделал утилиту eex2slime для конвертирования. Проверял её на опенсорсных исходниках hex.pm и changelog.com: из-за небольших ограничений Slime исходные шаблоны пришлось немного подготовить, но в целом конвертация происходит успешно. Эта утилита — адаптация гема html2slim, поэтому для работы нужен Ruby >= 1.9.3. Использование:

$ gem install eex2slime $ eex2slime lib/web/templates/

Ещё сделал онлайн-конвертер. Пока что он работает только в режиме slime->eex. Полезен для проверки того, как именно отработает конкретный Slime-темплейт.

Оно того стоит?

Писать и редактировать код на Slim’е быстрее, чем на Erb. Из минусов: не все его знают; кому-то синтаксис кажется плохо читаемым. Впрочем, выучить его просто, а подсветка синтаксиса избавляет от возможных проблем с читаемостью.
Eсли команда вашего проекта небольшая и коллеги не против — попробовать Slim/Slime стоит.

P.S. Если писать горы тегов неудобно, а синтаксис Slim не нравится, можете попробовать Emmet.

ссылка на оригинал статьи https://habrahabr.ru/post/324332/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *