Twig vs Smarty

Привет!

Думаю сменить шаблонизатор со Smarty на что нибудь другое. Думаю над twig'ом или вообще native.
Сравнительных характеристик шаблонизаторов не очень много (одна вроде как на хабре проскакивала), там twig вроде как выигрывает, но я не нашел ни одного вразумительного отзыва о реальном его использовании.

Поделитесь опытом, пожалуйста.
  • Вопрос задан
  • 8754 просмотра
Пригласить эксперта
Ответы на вопрос 10
Попробовал twig и в новых проектах отказался от «нативного шаблонизатора», хотя всегда был его горячим сторонником. Основная причина — в twig по умолчанию включено экранирование вывода и {{user.name}} куда короче (и понятней верстальщику), чем <?php echo htmlspecialchars($user->name, ENT_QUOTES, 'UTF-8') ?>. Плюс для удобного использования хелперов и переменных (хотя бы замены htmlspecialchars($user.name, ENT_QUOTES, 'UTF-8') на escape($user-name), а в идеале просто $user->name), требует вторжения в глобальную область видимости, что может привести к трудно улавливаемым глюкам.
Ответ написан
Комментировать
taliban
@taliban
php программист
Мы долго работали со смарти, с дву и еще некими смартиподобными, так как было время когда смарти не развивалось, и мы пытались найти альтернативу. Потом Сделали пару проектов без шаблонизатора вообще, на этом и остановились. Если правильно подойти к этому делу, то, использование пхп как шаблонизатора, это не так уж и затратно, а где-то даже и удобно.
Ответ написан
Комментировать
zizop
@zizop
А почему вы не хотите перейти на native? Вид — php-файл собственно.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
PHP как шаблонизатор — это довольно удобно, т.к.:
* полноценный язык;
* заведомо шустрее шаблонизаторов, построенных на его основе;
* не требует поддержки специфического синтаксиса от вашей IDE/редактора;
* его практически все знают. (Если верстальщик не знает хотя бы PHP хотя бы на уровне «скопипастить и подправить», то от него больше проблем, чем пользы).

Но есть и минусы:
* PHP как шаблонизатор преизрядно многословен. Мне лично как фронтендеру не очень весело со всем этим, особенно после шаблонов Django.
* Нет наследования блоков, из-за этого вызов партиалов с передачей нетривиальных параметров выглядит жутко, иногда с кучей html в строковых литералах.
Ответ написан
zt50
@zt50 Автор вопроса
Ай, да совсем забыл — меня очень смущает что шаблоны на твиге в первую компиляцию шаблона (когда кэша еще нет) компилируются ну оооочень долго, дольше 30 секунд, правда потом, когда скомпилированы все очень быстро и шустро. Спасибо.
Ответ написан
@RomAndry
Шаблонизаторы были в почете в свое время, сейчас любой верстальщик знает основы WEB программирования и ему не сложно в шаблонах использовать блоки того же PHP кода.
Но все равно шаблонизаторы рулят и привычка остается.
Посмотрите еще для себя немецкий проект vLIB (прямая ссылка пока не работает)
Ответ написан
Комментировать
@bsboris
+1 за php в качестве шаблонизатора. Самый главный недостаток Смарти (и вообще любого стороннего шаблонизатора) — он добавлят лишнюю сущность в проект. Веб-разработчикам и так надо знать кучу языков (навскидку — html, css, js+фреймворк, sql, серверный язык + фреймворк). Помнить при этом еще и синтаксис шаблонизатора излишне. К тому же, сам php и правда весьма удобен для использования в шаблонах, главное использовать синтаксис вида if(...): endif; вместо if(...) {} (может показаться очевидным, но, например, один знакомый программист любит городить фигурные скобки в шаблонах. Выглдядит кошмарно.)
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Никакой «песочницы» стандартными средствами языка не предусмотрено

Опять же я не знаток PHP, но, если я правильно помню, песочницу вполне реально создать.
Ответ написан
@Elkaz
fabien.potencier.org/article/34/templating-engines-in-php — сравнение шаблонизаторов. Советую Twig, по причине того, что он гораздо удобнее любого другого шаблонизатора на РНР, и быстрее (и удобнее) native PHP.
Ответ написан
@criminalist
На хабре есть пост, Twig на порядок медлительней Smarty, учитывайте этот момент
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы