Страницы

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

четверг, 19 декабря 2019 г.

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

#php #cms #html


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


Ответы

Ответ 1



Многое зависит от того, какие требований к шаблонизатору. Так например, одни шаблонизаторы могут быть более гибкими, вторые более быстрыми, третьи лучше отделяют логику от представления. Из тех шаблонизаторов, с которыми мне приходилось работать самому, я бы мог выделить следующие: Шаблоны на "чистом" 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 проектов.

Ответ 2



Я бы использовал нативный шаблон html + php. Это достаточно быстрее чем Смарти, но будет проблематично верстальщику. Для этого код просто выделять в блоки с комментариями.

Ответ 3



За всю свою жизнь не встретил ни одного верстальщика, которому было бы проблематично понять нечто вроде . Ответ на вопрос. Если CMS и правда многоцелевая, то xml. с помощью xslt можно сотворить очень многое.

Ответ 4



Мне лично нравится мой самописный шаблонизатор (могу залить куда-нибудь; документации нет). Весит мало, умеет только то, что нужно: делать include в шаблон, дублировать блоки и вставлять значения в метки. Сами шаблоны напоминают html и не содержат в себе логики. То есть, прогер указывает верстаку, что будет выводиться на странице, а верстак уже решает, где это будет и как.

Ответ 5



Используйте любой шаблонизатор, если вы планируете пользоваться своей CMS больше одного раза :) Лучше всего использовать смарти, по которому много документации и с которым знакомы большинство верстальщиков и программистов. Лучше подключить его сразу, чем потом тратить кучу времени на переделку CMS под корректную работу с шаблонизаторами. Насчет мнения, что смарти много весит и медленно работает - с чего вы взяли? Тем более дешевле прикупить хостинг по-мощнее, чем платить программисту, чтобы он навел порядок в шаблонах ;)

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

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