Erb, haml или slim: какой из них вы предлагаете? И почему?

Я изучаю Rails, и я видел эти механизмы шаблонов. У меня нет опыта с ними (только erb).

Но поскольку я новичок, я действительно смущен. Какой из них вы предлагаете и почему? Эрб, Хамл или Слим? Пожалуйста, расскажите, почему вы предпочитаете один из них. И если у вас есть другие рекомендации, сообщите нам.

EDIT: Я НЕ Ищем победителя здесь. Я просто хочу услышать ваше мнение о них, их синтаксис, скорость исполнения и т.д.

Ответ 1

ERB хорош в основном, если у вас есть веб-дизайнер, который будет работать на простой HTML и не знает ни haml, ни slim. Таким образом, он может писать HTML, и вы можете вставлять Ruby-логику с соответствующими тегами.

Если вы работаете как с HTML, так и с рубиновой логикой, или ваш дизайнер готов изучить что-то новое (например, HAML), я бы пошел на HAML. Он намного удобнее для рубинов, уменьшает количество char на много и намного читабее, чем на ERB.

Например (взято с официального сайта HAML):

В ERB ваше представление будет выглядеть так:

<div id="profile">
  <div class="left column">
    <div id="date"><%= print_date %></div>
    <div id="address"><%= current_user.address %></div>
  </div>
  <div class="right column">
    <div id="email"><%= current_user.email %></div>
    <div id="bio"><%= current_user.bio %></div>
  </div>
</div>

Пока в HAML это будет выглядеть так:

#profile
  .left.column
    #date= print_date
    #address= current_user.address
  .right.column
    #email= current_user.email
    #bio= current_user.bio

Много чище!

Что касается разницы между HAML и SLIM - я никогда не работал с SLIM, но я думаю, что это вопрос вкуса - взгляните на оба синтаксиса и решите, что выглядит лучше в ваших глазах. Я не думаю, что между этими двумя есть определенный победитель (HAML/SLIM).

Ответ 2

Два больших преимущества использования slim over haml:

  • В настоящее время Slim в восемь раз быстрее, чем haml.

  • Slim поддерживает потоковое HTTP, а HAML - нет.

  • Slim имеет более естественный синтаксис: a href="foo.html"

Ответ 3

Сверху моей головы это то, что я придумал

ERB

Доводы

  • default из коробки
  • не зависит от пробела
  • самый низкий барьер входа (если он поступает из HTML), так как его HTML с кодом Ruby, посыпанным в
  • большинство лексиков IDE читают его по умолчанию.
  • DHH предпочитает его
  • устаревшие приложения, вероятно, все еще используют его

против

  • более подробный
  • content_for теги в помощниках и представлениях могут быстро выйти из рук.
  • Контент content_for делает тэги более сложными, поскольку erb возвращает только последнюю строку в блоке. поэтому вам нужно добавить к строке и затем вернуть ее.

HAML

Доводы

  • более кратким. нет закрывающих тегов, подходит для небольших экранов.
  • визуально более чистая структура
  • создал встроенные помощники (haml_concat, haml_capture) для использования haml в вспомогательных методах.
  • цепочка классов
  • много полезного синтаксического сахара, например # для divs или. для цепочки классов или: javascript для тегов JS

против

  • зависимая от whitespace, которая заставляет иногда ошибочно определять ошибки
  • Сложные теги обычно должны прибегать к формату "хэш". (Хотя я на самом деле думаю, что это отличный пример гибкости для кого-то, начинающего это может быть болью.)
  • добавлен как драгоценный камень (опять же, возможно, растянуть, чтобы положить это как con)
  • у дизайнеров может возникнуть проблема с настройкой
  • в дополнение к общему предупреждению пробелов... простые ошибки пробелов, например. вкладки и пробелы для отступов, может привести к ошибкам страниц в производстве, которые нормальные спецификации/тест не поймают. Мораль: ожидайте большую потребность в тестах просмотра и, возможно, не используйте haml для критических просмотров миссии, если вы не уверены, что ваши тесты проверяют фактическое отображение представления.
  • медленнее (чем erb)
    • caveat: это рубиновый код, о котором мы говорим, если скорость является проблемой блокировки в вашем приложении, есть альтернативы рубину, например. Haskell

Ответ 4

Вопрос для меня сводится к тому, что вы ставите % перед каждым тегом или | перед каждым новым блоком текста?

Слим:

 tag(attr= "value")
  | text

Haml:

 %tag{attr: "value"}
   text

Еще одна вещь, которую нужно искать: haml предполагает пробел между новыми строками (удалить пробел в haml), в то время как slim не предполагает пробела (Добавить пробел в Slim здесь и здесь)

Ответ 5

https://github.com/scalp42/hamlerbslim - независимый тест, который показывает Slim и Erb в качестве победителей, производительность - мудрая (slim также уменьшает размер вывода HTML.)

Мое личное мнение заключается в том, что в целом Slim и Haml сэкономит вам время (== деньги) с точки зрения обслуживания, если у вас есть разумные люди Haml/Slim, которые смотрят ваши взгляды.

Если у вас нет этих людей, Erb определенно подходит, потому что, несмотря на лучшую волю в мире, есть много очень недорогих людей, которые могут работать с HTML/Erb, но найти Haml/Тонкая тайна.

Лучший из всех случаев, тренируйте этих людей, чтобы использовать Slim или, по крайней мере, выставлять их на него, и хранить числа тех, кто "получает".