smarty все-таки заточен под определенные вещи. haml это почти хтмл. если вы фотошопом режете psd и экспортируете в хтмл то никто вам потом не помешает сделать haml-convert ваш_хтмл выхож_хамл. но чаще всего процесс выглядит так: psd, порезанный psd, haml шаблон с использованием порезанных картинок.
насчет лишнего уровня абстракции то тут не совсем верно. конечно везде могут быть баги, но перевод %div в <div></div> довольно прост. подстановка переменных и вычислениые выражение это дело тех же рельсов. так что тут количество добавленных багов намного меньше чем количество удобств ( все же читать потом более короткий шаблон удобнее )
любой шаблонизатор можно превратить в какашку :) в том же хамле или смарти можно нахерачить циклов. ифов. вывовов моделей и т.д. а можно только выводить нужные переменные и все становится красиво :)
принципиально лучше на мой взгляд то что потом читать удобнее шаблон на хамле (он просто короче)
второй пункт конечно относиться к рельсам это подстановки переменных.
в коде
my_var = '123'
шаблон
.bla#ops= my_var
результат
<div class='bla' id='ops'>123</div>
третье тоже к рельсам привязано. очень часто надо сделать див с id product_123 где 123 порядковый номер продукта.
в коде @product = загрузили объект из базы. его id в базе 123
ну это как приучить быдлокодеров :) причем учить надо еще в школе такой вещи как семантика. чтобы было понятно почему base_background_color нужно выносить в переменную, а left_to_login_box_button_under_search_field_link_color не стоит :)
нигде. это просто в рельсах придумано. в xhtml вы можете в любой тег добавлять свои аттрибуты. ну и делаем a href='/bbb' remote='true' и в скриптах $('a[remote=true]').bind('click', function(){}) и т.д. все это работае в любом браузере.
в любом случае — на вкус и цвет товарищей нет :)
второй пункт конечно относиться к рельсам это подстановки переменных.
в коде
my_var = '123'
шаблон
.bla#ops= my_var
результат
<div class='bla' id='ops'>123</div>
третье тоже к рельсам привязано. очень часто надо сделать див с id product_123 где 123 порядковый номер продукта.
в коде @product = загрузили объект из базы. его id в базе 123
%div[@product]
<div class='product' id='product_123'>
еще много всякого. можно в доках глянуть.
з.ы. haml, а не xaml.
%div
%span
%p
123
развернеться в
<div>
<span>
<p>123</p>
</span>
</div>
а то что доктайп можно записывать в виде — !!! вобще красота :)
вот тут реализация data-remote для a, form, input.
з.ы. может ошибся с селектором. ща думать лень :)