DjDiablo, мне кажется ты не понял концепцию моей шаблонки
Шаблон Snakeskin - это функция JavaScript, т.е. когда ты напишешь
{template foo(name)}
Hello {name}!
{end}
То после трансляции будет
var foo = function foo(name) {
var __SNAKESKIN_RESULT__ = '',
$_;
var TPL_NAME = 'foo';
var PARENT_TPL_NAME;
__SNAKESKIN_RESULT__ += ' Hello ';
__SNAKESKIN_RESULT__ += Snakeskin.Filters.html(Snakeskin.Filters.undef(name));
__SNAKESKIN_RESULT__ += '! ';
return __SNAKESKIN_RESULT__;
};
Т.е. это простая функция, которая принимает параметры и плюётся текстом. Никакого data-binding нет и не спроста, т.к. это задача отдельного инструмента. Snakeskin поддерживает сахарный синтаксис для "пометок" для либы, которая будет делать data-binding.
{template foo(name)}
<input value="{{value}}" />
{end}
А уже с полученным можно юзать любую либу биндинга, например Ractive. Так что Snakeskin - это именно шаблоны, которые сделаны очень качественно (чего не скажешь о блендерах вроде Angular) с охренительной поддержкой для code-reuse.
Пример использования на клиенте:
{template Select.prototype.render(name) extends Input.prototype.render}
{block dropdown}
...
{end}
{end}
В проекте над которым я сейчас работаю больше 300 клиентских шаблонов, которые работают именно по такому принципу и рендеринг всего добра занимает примерно 1 сек, т.е. Snakeskin проектировался быть быстрым.
Коротко суть.
***
Если решите таки юзать, то я бы рекомендовал подождать релиза новой версии, которую я хочу сделать в конце этой недели, т.к. там будет внедрено очень много фишек