Конкатенация разная бывает.
У простых шаблонизаторов — это линейная склейка строк + if/for.
У xsl/yate это выбор, в зависимости от данных, что дальше склеивать.
Первый вариант работает мега-быстро, но при увеличении числа шаблонов, количества переопределений, появления common'а и вызова его из разных мест, код превращается в кашу.
Второй вариант работает медленнее, зато у него легкая поддержка и простота работы с большим числом шаблонов.
Давайте разберем пример. Есть массив, каждый элемент надо отрисовать по-разному, в зависимости от типа.
в xsl мы пишем
Т.о. добавление нового типа простое и понятное, тем более, что такой шаблон можно написать в любом месте (хоть сторонний код) и все будет работать.
Как это реализовать на вашем любимом шаблонизаторе?
У простых шаблонизаторов — это линейная склейка строк + if/for.
У xsl/yate это выбор, в зависимости от данных, что дальше склеивать.
Первый вариант работает мега-быстро, но при увеличении числа шаблонов, количества переопределений, появления common'а и вызова его из разных мест, код превращается в кашу.
Второй вариант работает медленнее, зато у него легкая поддержка и простота работы с большим числом шаблонов.
И мы не рендерим страницы на сервере, а рендерим их на клиенте.