erb, haml или slim: какой из них вы предлагаете? И почему? [закрытый]
Я изучаю рельсы, и я видел эти шаблонные движки. У меня нет опыта работы с ними (только erb).
но поскольку я новичок, я действительно запутался. Какой из них вы предлагаете и почему? Эрб, Хэмл или Слим? Пожалуйста, объясните причину, по которой вы предпочитаете один из них другим. И если у вас есть какие-либо другие рекомендации, пожалуйста, сообщите нам об этом.
изменить:
Я не ищу здесь победителя. Я просто хочу услышать Ваше мнение о них, их синтаксисе, скорости выполнения и т. д так далее.
5 ответов:
ERB хорош в основном, если у вас есть веб-дизайнер, который будет работать на простом HTML и не знает ни haml, ни slim. Таким образом, он может писать HTML, и вы можете встроить логику ruby с соответствующими тегами.
Если вы работаете как на HTML, так и на ruby logic, или ваш дизайнер готов узнать что-то новое (например, 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
минусы
- пробел зависит, что делает для некоторых трудных ошибок, чтобы выяснить время от времени
- сложный теги обычно нужно прибегать к" хэш-формату". (Хотя я на самом деле думаю, что это отличный пример гибкости для кого-то, кто начинает это может быть боль.)
- добавлено как драгоценный камень (опять же, вероятно, растяжка, чтобы поставить это как con)
- дизайнеры могут иметь некоторые проблемы с адаптацией
- в дополнение к общему предупреждению пробелов... простые ошибки пробелов, например. вкладки и пробелы для отступов могут привести к ошибкам страниц в производстве, которые обычные спецификации/тест не поймают. Мораль: ожидайте большей потребности в тестах просмотра и, возможно, не используйте haml для критически важных представлений, если вы не уверены, что ваши тесты проверяют фактическую визуализацию представления.
- медленнее (чем erb)
- предостережение: это ruby код, о котором мы говорим, если скорость является проблемой блокировки в вашем приложении есть альтернативы ruby, например haskell
вопрос для меня сводится к тому что бы вы предпочли поставить
%перед каждым тег или|перед каждым новым блоком текста?Slim:
tag(attr= "value") | textHaml:
%tag{attr: "value"} textеще одна вещь, которую нужно искать: haml предполагает пустое пространство между новыми строками (удалить пробелы в haml) в то время как slim не предполагает никакого пространства (добавить пробелы в Slim здесь и здесь)
https://github.com/scalp42/hamlerbslim - это независимый тест, который показывает Slim и Erb как победителей, производительность мудрая (slim имеет тенденцию уменьшать размер вывода HTML тоже.)
мое личное мнение заключается в том, что в целом, Slim и Haml сэкономят вам время (== деньги) с точки зрения обслуживания, если у вас есть Haml/Slim подкованные люди, заботящиеся о ваших взглядах.
Если у вас нет этих людей, Erb-это определенно путь, потому что, несмотря на лучшее будет в мире, есть много очень недорогих людей, которые могут работать с HTML / Erb, но найти Haml/Slim полная тайна.
лучше всего, обучите этих людей использовать Slim или, по крайней мере, подвергать их этому, и сохраните номера тех, кто "получает это."
Comments