вівторок, 20 вересня 2011 р.

Коротке введення в шаблонізатор Slim

Давно хотів написати статтю про Haml, та все ніяк не доходили руки. Починаючи з 1.2 Sinatra підтримує новий шаблонізатор Slim. Вирішив познайомитися з ним, і він мені відразу сподобався. Slim взяв найкраще від Haml, і основне його завдання - зменшити об'єм коду.

Шаблони Slim можуть виглядати як Haml, використовуючи ярлики id і class, але їх використання не є обов'язковим. Як і в Haml форматування тут відбувається відступами.
Ось так виглядає приклад шаблону з використанням Slim:
Якщо Haml – це HTML на стероїдах, тоді Slim – це Haml на дієті.

Інсталяція:

$ gem install slim

 

Список операторів:

| Вертикальна риска повідомляє шаблонізатору, що потрібно просто вивести текст. При цьому всі "небезпечні" символи фільтруються.
' Одинарна лапка працює як і попередній оператор, але додає в кінці пробіл.
- Дефіс працює як в Haml, використовується для циклів, умов та іншого.
= Знак рівності використовується для виводу результату виконання коду Ruby в html.
=' Працює як і попередній оператор, але додає в кінці пробіл.
== Працює як і знак рівності, але виводить текст "як є", без обробки методом escape_html
==' Працює як і попередній оператор, але додає в кінці пробіл.
/ Код не буде виконуватись і не потрапить в html взагалі.
/! Знак для html коментарів (<!-- -->), які потраплять у вивід.

 

Атрибути та коментарі.

Позначати id і class можна ось так: Для порівняння в Haml: Крім того, Slim допускає кілька варіантів синтаксису: Допускається на вибір використання наступних обгорток для атрибутів: {...}, [...], (...) Ще одна приємна штука - динамічний контент в атрибуті. Якщо в атрибуті не вказані лапки, буде використана змінна. Подобається, як працюють коментарі. Якщо є блок коду, який потрібно закоментувати, достатньо додати всього один рядок, що вплине на весь блок: Завдяки Tilt, Slim має підтримку інших шаблонізаторів:
ДвигунФільтрНеобхідні бібліотеки
Rubyruby:none
Javascriptjavascript:none
CSScss:none
ERBerb:none
Hamlhaml:haml
Sasssass:haml/sass
Scssscss:haml/sass
LessCSSless:less
Builderbuilder:builder
Liquidliquid:liquid
RDiscountmarkdown:rdiscount/kramdown
RedClothtextile:redcloth
RDocrdoc:rdoc
Radiusradius:radius
Markabymarkaby:markaby
Nokogirinokogiri:nokogiri
CoffeeScriptcoffee:coffee-script (+node coffee)

На сам кінець кілька слів про продуктивність. Інформація взята з офіційної сторінки автора stonean.com/slim-update:
                           user     system      total        real
 erb                    0.560000   0.010000   0.570000 (  0.574373)
 erubis                 0.480000   0.000000   0.480000 (  0.501512)
 fast erubis            0.470000   0.000000   0.470000 (  0.481918)
 slim                   0.610000   0.000000   0.610000 (  0.612794)
 haml                   3.930000   0.010000   3.940000 (  3.939419)
 haml ugly              3.790000   0.010000   3.800000 (  3.798528)
 erb (cached)           0.190000   0.000000   0.190000 (  0.188593)
 erubis (cached)        0.160000   0.000000   0.160000 (  0.159869)
 fast erubis (cached)   0.140000   0.000000   0.140000 (  0.135476)
 slim (cached)          0.150000   0.000000   0.150000 (  0.153698)
 haml (cached)          0.430000   0.000000   0.430000 (  0.436980)
 haml ugly (cached)     0.370000   0.000000   0.370000 (  0.372770)

Корисні посилання:

Немає коментарів: