Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Шаблонный движок (https://javascript.ru/forum/project/18392-shablonnyjj-dvizhok.html)

ваый 29.06.2011 01:52

Шаблонный движок
 
Привет.

Интересно узнать мнение людей по поводу парсера для шаблонов. Писал для себя, поскольку существующие варианты по ряду причин не устраивали.

Посмотреть можно на github, или поэкспериментировать на jsfiddle.

Буду признателен за замечания и мнения.

vflash 29.06.2011 12:31

}} могут конфликтовать со скриптом в шаблонах.

сделайте какой-нибудь простенький тест. без тестов скучно )

ваый 29.06.2011 13:19

потестировать можно на jsFiddle. ну а вообще, такой конфликт невозможен, исходя из логики разбора шаблона, которую я использую.

vflash 29.06.2011 13:39

<td>{{ '<b onclick="if(...){if(...){...}}">Test</b>' }} {{ '<b>Test</b>'|stripTags }}</td>
а так ?

тесты на скорость

ваый 29.06.2011 14:34

Ага, я понял, о чем вы. Да, действительно, такая проблема возможна. Если внутри маркера встретится последовательность }} она будет воспринята, как правый разделитель. Можно, конечно использовать } } вместо }}, но согласен - косяк.

tenshi 29.06.2011 19:33

у меня шаблоны рисуются одинарными { } а для экранирования используется удвоение {{ }}. и в яваскрипте и в хслт единообразно и наглядно.

ваый 29.06.2011 23:28

да, я что-нибудь придумаю для экранирования.
я изначально хотел, чтобы маркеры были как в twig и django, это тот стиль, который я предпочитаю. и, строго говоря, проблем у меня пока не было, поскольку ситуации, когда нужно экранировать, сравнительно редки.

vflash 30.06.2011 01:04

да можно не экранировать. ситуация редкая.

а как из шаблона вызвать другой шаблон ?

ваый 30.06.2011 01:22

такого нельзя сделать. вообще, мне требовалось максимально легкое решение. не больше пары kb, с базовой логикой.
однако, вы меня навели на размышление: это вполне можно сделать используя модификаторы.

что-то типа такого:

{{ 'tpl_inner_block'|tpl(user) }}


user тут объект, который будет доступен в шаблоне tpl_inner_block. ну и tpl - модификатор, который будет возвращать отпаршеный подшаблон.

vflash 30.06.2011 12:00

если это строчка то экранировать можно обратным слешем. уже работает.
но правельнее былобы следить за открытыми скобками


Часовой пояс GMT +3, время: 22:42.