Шаблонный движок
Привет.
Интересно узнать мнение людей по поводу парсера для шаблонов. Писал для себя, поскольку существующие варианты по ряду причин не устраивали. Посмотреть можно на github, или поэкспериментировать на jsfiddle. Буду признателен за замечания и мнения. |
}} могут конфликтовать со скриптом в шаблонах.
сделайте какой-нибудь простенький тест. без тестов скучно ) |
потестировать можно на jsFiddle. ну а вообще, такой конфликт невозможен, исходя из логики разбора шаблона, которую я использую.
|
<td>{{ '<b onclick="if(...){if(...){...}}">Test</b>' }} {{ '<b>Test</b>'|stripTags }}</td>
а так ? тесты на скорость |
Ага, я понял, о чем вы. Да, действительно, такая проблема возможна. Если внутри маркера встретится последовательность }} она будет воспринята, как правый разделитель. Можно, конечно использовать } } вместо }}, но согласен - косяк.
|
у меня шаблоны рисуются одинарными { } а для экранирования используется удвоение {{ }}. и в яваскрипте и в хслт единообразно и наглядно.
|
да, я что-нибудь придумаю для экранирования.
я изначально хотел, чтобы маркеры были как в twig и django, это тот стиль, который я предпочитаю. и, строго говоря, проблем у меня пока не было, поскольку ситуации, когда нужно экранировать, сравнительно редки. |
да можно не экранировать. ситуация редкая.
а как из шаблона вызвать другой шаблон ? |
такого нельзя сделать. вообще, мне требовалось максимально легкое решение. не больше пары kb, с базовой логикой.
однако, вы меня навели на размышление: это вполне можно сделать используя модификаторы. что-то типа такого: {{ 'tpl_inner_block'|tpl(user) }} user тут объект, который будет доступен в шаблоне tpl_inner_block. ну и tpl - модификатор, который будет возвращать отпаршеный подшаблон. |
если это строчка то экранировать можно обратным слешем. уже работает.
но правельнее былобы следить за открытыми скобками |
Часовой пояс GMT +3, время: 22:42. |