Pull to refresh
32
0
Alexey Androsov @doochik

User

Send message
Люди без винды оказались не у дел.
т.е. все типы надо знать заранее?
Ок, я с вашим аргументами согласен, но все-таки попробую переубедить :)

Давайте разберем пример. Есть массив, каждый элемент надо отрисовать по-разному, в зависимости от типа.
<items>
  <item type="1"/>
  <item type="2"/>
  <item type="1"/>
  ...
</items>


в xsl мы пишем
<xsl:template match="items">
  <xsl:apply-templates/>
</xsl:tempate>

<xsl:template match="item">
  <!-- общий html -->
</xsl:tempate>

<xsl:template match="item[@type = 2]">
  <!-- переопределение -->
</xsl:tempate>


Т.о. добавление нового типа простое и понятное, тем более, что такой шаблон можно написать в любом месте (хоть сторонний код) и все будет работать.

Как это реализовать на вашем любимом шаблонизаторе?
Что-то я не нашел там предикатов и apply-templates, покажите пример.
Конкатенация разная бывает.
У простых шаблонизаторов — это линейная склейка строк + if/for.
У xsl/yate это выбор, в зависимости от данных, что дальше склеивать.

Первый вариант работает мега-быстро, но при увеличении числа шаблонов, количества переопределений, появления common'а и вызова его из разных мест, код превращается в кашу.

Второй вариант работает медленнее, зато у него легкая поддержка и простота работы с большим числом шаблонов.
… чтобы не убится об новый код. Простейшие реплейсеры как раз приведут к тому, что у нас будут не шаблоны, а каша.

И мы не рендерим страницы на сервере, а рендерим их на клиенте.
Тем, что нет аналога xsl'ного apply-templates и предикатов в матчах шаблонов. Без этого наша тонна кода превратится в неподдерживаемую кашу.
Это не XSL-подобный синтаксис. Fest — обычный replacer, типа mustache или handlebars. Нам такие шаблонизаторы сразу не подошли.
У Fest же нет рантайма в браузере
А это закрытое решение или где-то в открытом доступе есть?

Information

Rating
Does not participate
Location
Россия
Works in
Date of birth
Registered
Activity