Цитата:
|
kobezzza,
А может шаблон собираться из разных файлов. html.ss
{template html(@param)}
{/}
header.ss
{template header(@param)}
{/}
main.ss
{include 'html.ss'}
{include 'header.ss'}
{template main(param) extends html}
{block header}
{super}
{/}
{/template}
Или только proto и apply? |
Конечно, такой приём по аналогии с классическими языками (от слова класс) называется "композицией". Самый удобный способ сделать это - это использовать директиву call.
{template foo(a, b)}
{a + b}
{/}
{template bar()}
{call foo(1, 2)} /// 3
{/}
Цитата:
Это уже вопросы архитектуры, лично я стараюсь отдавать предпочтение наследованию, т.к. в таком случае архитектура более управляемая и ясная, а композицию могу использовать, где она явно напрашивается. |
Цитата:
|
Цитата:
|
kobezzza,
Пару вопросов. 1. proto может быть только один? 2. block или blocks? В чем отличия или это опечатка? Цитата:
Цитата:
{@des|br|!html}
Фильтры клева. Немного чудно, что !html отменяет html, который задается неявно, но клева :) |
Цитата:
{proto foo->some(a, b)}
{a + b}
{/}
{template foo()}
{proto bar(a)}
{a * 2}
{/}
{apply some(1, 2)} /// 3
{apply bar(2)} /// 4
{/}
Цитата:
Цитата:
Следует помнить, что фильтры можно применять почти в любых директивах, т.е. этот механизм пронизывает всю шаблонку.
{var a = ' fooo '|trim}
{if ' fooo '|trim}
и т.д. Если нужно наложить фильтр на определённую часть выражения, а не на всю, то нужно выделить её скобками.
{var a = (' ffffuuu '|trim) + ' bar '}
Но фильтр !html можно применять только глобально. PS: на меня тут гора дел навалилась, поэтому не смог сделать релиз как обещал :( Буду стараться к концу этой недели сделать. |
Цитата:
|
Цитата:
Вот сделал примерчик, где идёт использование прототипов при наследовании, причём один из прототипов переопределяется. http://jsfiddle.net/NAPWB/15/ PS: хороший пример возможных вариантов использования можно глянуть в тестах, для прототипов, например, https://github.com/kobezzza/Snakeski.../test/proto.ss https://github.com/kobezzza/Snakeski...test/proto2.ss (шаблоны расположены между ###, а остальное данные для тестового скрипта) |
Цитата:
{template html(@param)}
<html>
<body>
{block body}
{proto des(@des)}
<div class="des">{@des}</div>
{/proto}
{/block}
</body>
</html>
{/template}
test.ss
{include 'test_html.ss'}
{template main(param) extends html}
{block body}
<div class="wrap">
{apply des()}
</div>
{/}
{/template}
des + <div class="des"></div> нет ни в test_html.ss.js ни в test.ss.js. То есть он не компилится. |
| Часовой пояс GMT +3, время: 08:42. |