Эрб, хэмл или Слим: что вы предлагаете? И почему? [закрытый]
Я изучаю 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:
Slim В настоящее время примерно в восемь раз быстрее, чем haml.
Slim поддерживает потоковую передачу HTTP, а HAML-нет.
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 или, по крайней мере, подвергать их этому, и сохранить номера тех, кто "получает это."