SlideShare uma empresa Scribd logo
1 de 19
ERB vs HAML vs SLIM

 Так ли хорош старый добрый ERB
(HTML), если есть что-то получше?
ERB vs HAML или SLIM
А если серьезно…
Преимущества HAML и SLIM перед ERB

• Более читабельный код представлений.
• Теги автоматически закрываются, нельзя пропустить закрывающий тег.
• Вывод ошибок.


Недостатки HAML и SLIM перед ERB

• Один тег на строку. Большая длина строк при большой вложенности
  элементов.
• Ниже производительность.
• Дополнительные зависимости.
Пример SLIM

doctype html
html
 head
  title Rubydev
  = stylesheet_link_tag "application", :media => "all"
  = javascript_include_tag "application"
  = csrf_meta_tags

 body
  header
   .center
     h1 Development with Rails
     h5 and other technologies
     = render partial: "devise/devise_links"
   = render partial: "layouts/navigation"
  section{width=“720px”}
   .center
     = yield

  footer
   | © RubyDev 2012-2013
Пример HAML
!!! 5
%html
  %head
    %title Rubydev
    = stylesheet_link_tag "application", :media => "all"
    = javascript_include_tag "application"
    = csrf_meta_tags

 %body
  %header
   .center
     %h1 Development with Rails
     %h5 and other technologies
     = render partial: "devise/devise_links"
   = render partial: "layouts/navigation"
  %section(:width => “720px”)
   .center
     = yield

  %footer
   | © RubyDev 2012-2013
Великий и ужасный ERB
<!DOCTYPE html>
<html>
 <head>
  <title>Rubydev</title>
  <%= stylesheet_link_tag "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
 </head>
 <body>
  <header>
   <div class="center">
     <h1>Development with Rails</h1>
     <h5>and other technologies</h5>
     <%= render partial: "devise/devise_links" %>
   <%= render partial: "layouts/navigation" %>
  </header>

  <section width="720px">
   <div class="center">
     <%= yield %>
   </div>
  </section>

  <footer>
    &copy; RubyDev 2012-2013
  </footer>
 </body>
</html>
Заметили ошибку?
<header>
 <div class="center">
  <h1>Development with Rails</h1>
  <h5>and other technologies</h5>
  <%= render partial: "devise/devise_links" %>
 ???
 <%= render partial: "layouts/navigation" %>
</header>
Синтаксический сахар. Такой сладкий-
               сладкий.
#articles
<div id="articles">
</div>

.article
<div class="article">
</div>

P (Slim)
<p></p>

%P (HAML)
<p></p>
Интерполяция

p Hello #{@user.name}! или %p Hello #{@user.name}!
Вместо:
<p>Hello <%= @user.name %>!</p>

Фильтры

javascript:
 alert(“Welcome to rubydev.ru");

markdown:
 #Hello #{“@user.name"} !

… textile, ruby, coffeescript, plain, sass, scss, lesscss, RedCloth, Haml, etc.
(thanks to Tilt)
… и много других улучшений
синтаксиса в сравнении с ERB
           (HTML)
Haml, Slim = быстрая разработка
HAML vs SLIM
Преимущества HAML

•   Более распространен.
•   Теги четко выделены.
•   Лучше документация.
•   Есть возможность создавать собственные фильтры.

Преимущества SLIM

• Больше фильтров благодаря Tilt.
• Больше производительность.
• Позволяет писать несколько тегов в одну строку (лучше не злоупотреблять)
Мнения разработчиков
Мое мнение:

Я использовал и Haml и Slim. Первым был Haml, затем Slim. Разница не
велика. Haml/Slim позволяют мне писать более чистый код, код, который
легче читать и поддерживать, код, который просто из-за того, что лишнее
выброшено быстрее писать. В HTML легко можно допустить ошибку,
Haml/Slim не дают разработчику ошибаться, 100% тегов будут закрыты!
Мнения разработчиков
По поводу альтернатив HTML/CSS могу сказать следующее:

В своей работе я использую Haml и SCSS и они меня вполне устраивают.
Работать с шаблонизаторами альтернативными ERB – Haml или Slim очень
удобно. Работа с ними становится гораздо приятнее. Помню как в первый
свой раз, используя Haml, я верстал и наслаждался процессом, не чувствовал
усталости от разработки. С Haml и SCSS работа как отдых.

-- Евгений Жлобо, front-end разработчик, фрилансер
Мнения разработчиков
ERB меня совсем огорчает, а вот HAML радует. Для себя я выделяю
несколько причин, почему HAML лучший выбор:

•   Закрывать теги давно уже не модно,
•   структура хамл исключает ошибки вложенности html тегов,
•   скорость разработки,
•   гибкость оформления кода и параметров,
•   легкость парсинга мозгом тегов и текстовой информации (в отличие от
    Slim, где теги и текст очень тяжело отличить друг от друга)

-- Илья Зыкин – фронтэнд разработчик из kupibilet.ru
Мнения разработчиков
Все новые проекты Hashrocket мы разрабатываем используя HAML и мы
собираемся перенести все существующие в нашем портфолио проекты на
HAML как можно быстрее. Разметка кода основанная на отступах работает
просто замечательно для генерации чистого и семантичного кода в такой
способ, когда вы можете ясно видеть разметку и ее связь с CSS кодом. Это
очень круто!

-- Оби Фернандез (http://blog.obiefernandez.com/content/2008/01/are-you-using-
h.html)
Хорошо, но как перевести существующий код
    на Haml/Slim? Это ведь очень долго!


                Нет, не долго!
     https://github.com/dhl/erb2haml,
   https://github.com/fredwu/haml2slim,
                      etc.
Вывод
Используйте Haml/Slim
Все еще хочется поспорить?
   ERB            HAML/SLIM

Mais conteúdo relacionado

Semelhante a Erb vs haml vs slim

Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычностьStepan Tanasiychuk
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf Conference
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentationVlad Orlov
 
Ошибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений КонцевойОшибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений КонцевойЛеонид Гроховский
 
Perl Debugger и mod_perl
Perl Debugger и mod_perlPerl Debugger и mod_perl
Perl Debugger и mod_perlИван mrRico
 
Php intro rus
Php intro rusPhp intro rus
Php intro rusaDDDitive
 
Serge P Nekoval Grails
Serge P  Nekoval  GrailsSerge P  Nekoval  Grails
Serge P Nekoval Grailsguest092df8
 
Yaremchuk - Drupal CodeLobster
Yaremchuk - Drupal CodeLobsterYaremchuk - Drupal CodeLobster
Yaremchuk - Drupal CodeLobsterAndrii Podanenko
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Ontico
 
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметкиCпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки7bits
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без болиAnton Piskunov
 
Павел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'eПавел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'eYandex
 
J query tutorial-for-beginners-1.0.1
J query tutorial-for-beginners-1.0.1J query tutorial-for-beginners-1.0.1
J query tutorial-for-beginners-1.0.1labzzzz
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsAndrei Kaleshka
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Yandex
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!Roman Dvornov
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...Ontico
 
HTML5 Web Components: следующий шаг к модульности вашего проекта
HTML5 Web Components: следующий шаг к модульности вашего проектаHTML5 Web Components: следующий шаг к модульности вашего проекта
HTML5 Web Components: следующий шаг к модульности вашего проектаrakhmanoff
 

Semelhante a Erb vs haml vs slim (20)

Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычность
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
ZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and MultilingualZFConf 2010: Zend Framework and Multilingual
ZFConf 2010: Zend Framework and Multilingual
 
Hadoop presentation
Hadoop presentationHadoop presentation
Hadoop presentation
 
J query tutorial-for-beginners-1.0.0
J query tutorial-for-beginners-1.0.0J query tutorial-for-beginners-1.0.0
J query tutorial-for-beginners-1.0.0
 
Ошибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений КонцевойОшибки в разработке интернет-магазинов - Евгений Концевой
Ошибки в разработке интернет-магазинов - Евгений Концевой
 
Perl Debugger и mod_perl
Perl Debugger и mod_perlPerl Debugger и mod_perl
Perl Debugger и mod_perl
 
Php intro rus
Php intro rusPhp intro rus
Php intro rus
 
Serge P Nekoval Grails
Serge P  Nekoval  GrailsSerge P  Nekoval  Grails
Serge P Nekoval Grails
 
Yaremchuk - Drupal CodeLobster
Yaremchuk - Drupal CodeLobsterYaremchuk - Drupal CodeLobster
Yaremchuk - Drupal CodeLobster
 
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
Веб-разработка без наркотиков с помощью PostgreSQL, Nginx и c2h5oh / Миша Кир...
 
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметкиCпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
 
Фронтенд разработка без боли
Фронтенд разработка без болиФронтенд разработка без боли
Фронтенд разработка без боли
 
Павел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'eПавел Шут — БЭМ в lean startup'e
Павел Шут — БЭМ в lean startup'e
 
J query tutorial-for-beginners-1.0.1
J query tutorial-for-beginners-1.0.1J query tutorial-for-beginners-1.0.1
J query tutorial-for-beginners-1.0.1
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
 
Баба Яга против!
Баба Яга против!Баба Яга против!
Баба Яга против!
 
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
HTML5 Web Components: следующий шаг к модульности вашего проекта / Андрей Рах...
 
HTML5 Web Components: следующий шаг к модульности вашего проекта
HTML5 Web Components: следующий шаг к модульности вашего проектаHTML5 Web Components: следующий шаг к модульности вашего проекта
HTML5 Web Components: следующий шаг к модульности вашего проекта
 

Erb vs haml vs slim

  • 1. ERB vs HAML vs SLIM Так ли хорош старый добрый ERB (HTML), если есть что-то получше?
  • 2. ERB vs HAML или SLIM
  • 3. А если серьезно… Преимущества HAML и SLIM перед ERB • Более читабельный код представлений. • Теги автоматически закрываются, нельзя пропустить закрывающий тег. • Вывод ошибок. Недостатки HAML и SLIM перед ERB • Один тег на строку. Большая длина строк при большой вложенности элементов. • Ниже производительность. • Дополнительные зависимости.
  • 4. Пример SLIM doctype html html head title Rubydev = stylesheet_link_tag "application", :media => "all" = javascript_include_tag "application" = csrf_meta_tags body header .center h1 Development with Rails h5 and other technologies = render partial: "devise/devise_links" = render partial: "layouts/navigation" section{width=“720px”} .center = yield footer | &copy; RubyDev 2012-2013
  • 5. Пример HAML !!! 5 %html %head %title Rubydev = stylesheet_link_tag "application", :media => "all" = javascript_include_tag "application" = csrf_meta_tags %body %header .center %h1 Development with Rails %h5 and other technologies = render partial: "devise/devise_links" = render partial: "layouts/navigation" %section(:width => “720px”) .center = yield %footer | &copy; RubyDev 2012-2013
  • 6. Великий и ужасный ERB <!DOCTYPE html> <html> <head> <title>Rubydev</title> <%= stylesheet_link_tag "application", :media => "all" %> <%= javascript_include_tag "application" %> <%= csrf_meta_tags %> </head> <body> <header> <div class="center"> <h1>Development with Rails</h1> <h5>and other technologies</h5> <%= render partial: "devise/devise_links" %> <%= render partial: "layouts/navigation" %> </header> <section width="720px"> <div class="center"> <%= yield %> </div> </section> <footer> &copy; RubyDev 2012-2013 </footer> </body> </html>
  • 7. Заметили ошибку? <header> <div class="center"> <h1>Development with Rails</h1> <h5>and other technologies</h5> <%= render partial: "devise/devise_links" %> ??? <%= render partial: "layouts/navigation" %> </header>
  • 8. Синтаксический сахар. Такой сладкий- сладкий. #articles <div id="articles"> </div> .article <div class="article"> </div> P (Slim) <p></p> %P (HAML) <p></p>
  • 9. Интерполяция p Hello #{@user.name}! или %p Hello #{@user.name}! Вместо: <p>Hello <%= @user.name %>!</p> Фильтры javascript: alert(“Welcome to rubydev.ru"); markdown: #Hello #{“@user.name"} ! … textile, ruby, coffeescript, plain, sass, scss, lesscss, RedCloth, Haml, etc. (thanks to Tilt)
  • 10. … и много других улучшений синтаксиса в сравнении с ERB (HTML)
  • 11. Haml, Slim = быстрая разработка
  • 12. HAML vs SLIM Преимущества HAML • Более распространен. • Теги четко выделены. • Лучше документация. • Есть возможность создавать собственные фильтры. Преимущества SLIM • Больше фильтров благодаря Tilt. • Больше производительность. • Позволяет писать несколько тегов в одну строку (лучше не злоупотреблять)
  • 13. Мнения разработчиков Мое мнение: Я использовал и Haml и Slim. Первым был Haml, затем Slim. Разница не велика. Haml/Slim позволяют мне писать более чистый код, код, который легче читать и поддерживать, код, который просто из-за того, что лишнее выброшено быстрее писать. В HTML легко можно допустить ошибку, Haml/Slim не дают разработчику ошибаться, 100% тегов будут закрыты!
  • 14. Мнения разработчиков По поводу альтернатив HTML/CSS могу сказать следующее: В своей работе я использую Haml и SCSS и они меня вполне устраивают. Работать с шаблонизаторами альтернативными ERB – Haml или Slim очень удобно. Работа с ними становится гораздо приятнее. Помню как в первый свой раз, используя Haml, я верстал и наслаждался процессом, не чувствовал усталости от разработки. С Haml и SCSS работа как отдых. -- Евгений Жлобо, front-end разработчик, фрилансер
  • 15. Мнения разработчиков ERB меня совсем огорчает, а вот HAML радует. Для себя я выделяю несколько причин, почему HAML лучший выбор: • Закрывать теги давно уже не модно, • структура хамл исключает ошибки вложенности html тегов, • скорость разработки, • гибкость оформления кода и параметров, • легкость парсинга мозгом тегов и текстовой информации (в отличие от Slim, где теги и текст очень тяжело отличить друг от друга) -- Илья Зыкин – фронтэнд разработчик из kupibilet.ru
  • 16. Мнения разработчиков Все новые проекты Hashrocket мы разрабатываем используя HAML и мы собираемся перенести все существующие в нашем портфолио проекты на HAML как можно быстрее. Разметка кода основанная на отступах работает просто замечательно для генерации чистого и семантичного кода в такой способ, когда вы можете ясно видеть разметку и ее связь с CSS кодом. Это очень круто! -- Оби Фернандез (http://blog.obiefernandez.com/content/2008/01/are-you-using- h.html)
  • 17. Хорошо, но как перевести существующий код на Haml/Slim? Это ведь очень долго! Нет, не долго! https://github.com/dhl/erb2haml, https://github.com/fredwu/haml2slim, etc.
  • 19. Все еще хочется поспорить? ERB HAML/SLIM