03.08.2022

Twig


Twig — компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. Армин Ронахер написал Twig в 2008 году для платформы блогов Chyrp. Он больше не возвращался к разработке и в большей степени занимался разработкой на Python. Синтаксис языка шаблонов Twig берёт начало от движков шаблонов Jinja и Django, первый из которых также создан Ронахером. Идею данного шаблонизатора развивает и поддерживает Фабьен Потенсье, ведущий разработчик и идеолог фреймворка Symfony, в котором Twig используется по умолчанию.

Сам Фабьен рассказывает о нём:

Когда я приступил к поиску PHP-шаблонизатора, я сосредоточился на библиотеках, копирующих поведение Django. Спустя несколько часов «гугления» был найден Twig. Его автором является Armin Ronacher, известный по проекту Jinja (шаблонизатор для Python). Несомненно, я испытываю крайнее уважение к Армину за его замечательную работу над Jinja. Twig скорее похож на Jinja, чем на Django, как описано в реализации.

Когда я взглянул на код, я сразу понял что это то, что я ищу. Главное отличие от Calypso состоит в том, что Twig компилирует шаблоны в обычный PHP-код. Я начал использовать эту библиотеку и в конце этой недели спросил у Армина, не желает ли он дать своему проекту новую жизнь. Его ответ был полон энтузиазма, и я приступил к изучению кода. Моя версия сильно отличается от версии Армина, но «лексер» и «парсер» сохранены почти в исходном виде.

Я потратил всего несколько дней на работу над кодом, но я уже горжусь результатом и думаю что пора показывать библиотеку публично. Вчера я написал документацию и сделал простой сайт. Осталось ещё много работы: закончить документацию, добавить тесты и PHPDoc; но код уже целостен и функционален:

  • Встроенное наследование шаблонов (шаблоны компилируются как классы)
  • Автоматическое экранирование (отсутствие дополнительного времени на запуск — все делается во время компиляции)
  • Сверхбезопасный режим «песочницы» (список допустимых тегов, фильтров и методов которые разрешены в шаблоне)
  • Расширяемость: вы можете переписывать все что угодно, даже функции ядра, написав расширение; также можно манипулировать AST перед компиляцией. Используя эти возможности, вы можете создать даже свой собственный DSL-язык, ориентированный на ваше приложение.

Несмотря на то, что Twig самый функциональный шаблонизатор, он ещё и самый быстрый.

Перевод статьи из личного блога

Синтаксис

  • {{ ... }} вывести значение переменной
  • {# ... #} комментарии.
  • {% ... %} запустить команду
    • {% set foo = 'bar' %}
    • {% if i is defined and i == 1%} ... {% endif %}
    • {% for i in 0..10 %} ... {% endfor %}

Пример

Пример ниже демонстрирует некоторые основные особенности Twig.

{% extends "base.html" %} {% block navigation %} <ul id="navigation"> {% for item in navigation %} <li> <a href="{{ item.href }}"> {% if item.level == 2 %}&nbsp;&nbsp;{% endif %} {{ item.caption|upper }} </a> </li> {% endfor %} </ul> {% endblock navigation %}

Похожие новости:

xine

xine
xine — медиаплеер с открытым исходным кодом, написан как разделяемая библиотека (xine-lib), которая поддерживает многочисленные фронтенды (xine-ui). Другой важной функцией xine является возможность

Nim

Nim
Nim (ранее — Nimrod) — язык программирования со статической типизацией, поддерживающий процедурный, объектно-ориентированный, функциональный и обобщённый стили программирования. По утверждению

Ван Россум, Гвидо

Ван Россум, Гвидо
Гвидо ван Россум (нидерл. Guido van Rossum; род. 31 января 1956, Харлем, Нидерланды) — голландский программист, прежде всего известный как автор языка программирования Python. Среди разработчиков

История языка программирования Python

История языка программирования Python
История языка программирования Python началась в конце 1980-х. Гвидо ван Россум задумал Python в 1980-х годах, а приступил к его созданию в декабре 1989 года в центре математики и информатики в
Комментариев пока еще нет. Вы можете стать первым!

Добавить комментарий!

Ваше Имя:
Ваш E-Mail:
Введите два слова, показанных на изображении: *
Популярные новости
Черепица — проверенный материал для кровли дома
Черепица — проверенный материал для кровли дома
Металлочерепица — один из востребованных материалов для монтажа кровли. Это металлические пластины,...
Керамическая плитка – преимущества использования для ванной
Керамическая плитка – преимущества использования для ванной
Керамическая плитка – один из самых популярных и востребованных отделочных материалов....
Преимущества аренды контейнера
Преимущества аренды контейнера
Аренда контейнера для хранения вещей — это инновационная услуга, которая в нашем государстве стала...
Все новости