Эрб, хэмл или Слим: что вы предлагаете? И почему? [закрытый]

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

но поскольку я новичок, я действительно смущен. Что вы предлагаете и почему? С ERB, Haml на или тонкий? Пожалуйста, объясните, почему вы предпочитаете одну из них другим. И если у вас есть какие-либо другие рекомендации, пожалуйста, сообщите нам об этом.

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

5 ответов


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

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

например (взято из official 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

намного чище!


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

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

  2. Slim поддерживает потоковую передачу HTTP, а HAML-нет.

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


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

ERB:

плюсы

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

минусы

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

Haml на

плюсы

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

минусы

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

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

тонкий:

 tag(attr= "value")
  | text

Haml:

 %tag{attr: "value"}
   text

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


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

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

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

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