Страницы

Поиск по вопросам

четверг, 1 ноября 2018 г.

Какие шаблоны лучше использовать в многоцелевой CMS?

Доброго всем дня! Интересует мнение большинства, какие шаблоны лучше использовать в многоцелевой CMS? Что лучше: php+html, smarty, twig...? Хотелось бы получить максимум отзывов (без "религиозных" споров) просто по делу, нравится ... потому что ... Заранее спасибо!


Ответ

Многое зависит от того, какие требований к шаблонизатору. Так например, одни шаблонизаторы могут быть более гибкими, вторые более быстрыми, третьи лучше отделяют логику от представления. Из тех шаблонизаторов, с которыми мне приходилось работать самому, я бы мог выделить следующие: Шаблоны на "чистом" php, будем называть их php mess Возможности. Тут все понятно. Все есть в вашем проекте, доступно и здесь "из коробки". Скорость. Так же очевидно, что скорость будет ограничиваться разве что кривизной шаблонов. Расширяемость. См. возможности. Юзабилити. А вот это пункт сводит на нет все преимущества предыдущих пунктов. Нет никакой разделяемости логики от представлений. Конструкции типа

$val) : ?php>
как правило неизбежны и быстро превращают шаблон в жутчайшее месиво говнокода. Отсутствие каких-либо песочниц или ограничений на выполняемый код делают его настоящим генератором багов. Крайне не рекомендовал бы использовать этот подход ни в каких проектах сложнее Hello, World Smarty - старейший и хорошо всем известный шаблонизатор. Возможности. Имеются функции, модификаторы, ветвления, инклюды. Компилирует шаблоны в php mess. В общем, стандартный набор шаблонизатора. Ничего особо примечательного нету. Песочницы нету. Скорость. Написан на PHP, шаблоны компилирует в php mess. Но из-за большего overhead на обслуживание и выполнение шаблонов, достаточно медлителен. Хотя, начиная с версии 3 стал пошустрее, но все равно достаточно далек от идеала. Расширяемость. Можно создавать свои функции и модификаторы, которые будут выполняться в runtime. Собственно, все. Юзабилити. Хорошая документация. Синтаксис, на мой взгляд, хоть и не очень лаконичен, но понятен любому грамотному верстальщику. Однако, наличие тега '{php}' и бесконтрольное добавление функций может легко превратить шаблон в месиво, похлеще чем встречается в php mess. Интегрируется со многими IDE. Рекомендовал бы его только в случае, когда есть верстальщики уже работавшие с ним и не желающие что-либо переучивать. Twig - новомодный шаблонизатор. Во многом схож с питоновским шаблонизатором Django Возможности. В чем-то схожи со Smarty. Те же модификаторы, циклы, ветвления, инкюды (но, к счастью, нету тега {php} или аналогов). Помимо этого предоставляет возможности блочной шаблонизации, наследование шаблонов, макросы и прочие мелкие полезности. Так же есть возможность настраивать лексемы языковых конструкций, что может упростить миграцию шаблонов других шаблонизаторов. Имеется песочница для безопасного выполнения шаблонов в изолированном окружении. Скорость. Сам Twig написан на чистом php. Компилирует шаблоны в php классы с последующим многократном использованием оных. Из коробки, в некоторых местах, проигрывает по скорости даже Smarty 3. Однако с использованием, идущего в комплекте расширения на C (которое содержит одну единственную функцию :)) можно получить вполне приемлемую производительность. Расширяемость. Тут Twig абсолютный лидер. Он позволяет все: от расширения языковых конструкций до создания своего компилятора шаблонов. Одной из примечательных особенностей можно отметить то, что можно писать расширения, которые будут работать на уровне компиляции. К примеру, не сложно написать расширение, удаляющее лишние пробелы из литералов один раз при компиляции, а не в runtime из всех переменных подряд. Или же можно написать расширение которое будет компилировать тот-же самый шаблон в чистый javascript. Юзабилити. Удобный лаконичный синтаксис. Некоторые конструкции, явно, позаимствованы из питона. Так же как и Smarty интегрируется со многими IDE. Рекомендовал бы для всех проектов не слишком критичных к производительности или требующих очень тесную интеграцию шаблонизатора с основным проектом. Blitz - безумно быстрый шаблонизатор от русского разработчика. Написан на C Возможности. Блоки, переменные, примитивная конструкция IF и пользовательские функции. Все. Скорость. Это наверное единственный из всех используемых мной шаблонизаторов, который в некоторых случаях (как правило для сложных шаблонов с большим количеством блоков) по скорости превосходит даже php mess! Более быстрого шаблонизатора я еще не встречал. Расширяемость. Единственная возможность расширения - это пользовательские функции. Однако в качестве параметров функций могут выступать только переменные текущего контекста или скалярные литералы, что делает их несколько ограниченными в возможностях. Юзабилити. Синтаксис в виде HTML комментариев, плюс отсутствие всевозможных циклов, сложных ветвлений и т.п делает, на мой взгляд, шаблоны очень удобными для верстки. Ничего лишнего, в браузере сразу видно как будут выглядеть все блоки шаблона. Верстальщику не нужно учить никаких сложных конструкций. Для разработчика же все в точности до наоборот. В связи со спецификой шаблонизатора и ограниченной функциональности нужно подготавливать данные с заранее определенной структурой (см. раздел 15. Nested iterations) или же вводить дополнительную прослойку, отвечающую за логику отображения. Рекомендовал бы для любых highload проектов.

Комментариев нет:

Отправить комментарий