Цитата:
|
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, время: 23:47. |