limb3_2007_4:ru:packages:wact:pros_and_cons
Плюсы и минусы WACT шаблонизатора
Плюсы WACT
WACT содержит мощные средства для компоновки шаблонов: обворачивание, включение, множественное обворачивание. Мы не знаем ни одного шаблонизатора, который может позволить подобные вещи.
WACT хорошо подходит для верстальщиков, так как все, кроме вывода переменных - это обычные теги, выучить которые очень легко. Легко огранизовать вывод списков, вывод пейджера, оформление форм и списков ошибок валидации, включение другого шаблона и т.д. Кроме этого, композиция шаблонов полностью может быть отдана на откуп верстальщику, он может выделять общие части как ему будет угодно - программист для этой работы не нужен.
WACT компилируемый шаблонизатор, где код первоначального шаблона сначала переводится в готовый к запуску php-скрипт, как например, это происходит в Smarty. Причем шаблон компилируется целиком, поэтому композиция (разбиение шаблона на части, обворачивание ит.д. ) никак не влияет на скорость исполнения шаблона, так как он собирается в одно целое при компиляции, от отличие, например, от Smarty.
Компиляция и достаточно чистый php-код откомпилированного шаблона делает WACT весьма быстрым шаблонизатором. Падение в производительности по сравнению с чистым php составляет приблизительно 3-4 раза (наши личные замеры) и этот отрыв при увеличении сложности шаблонов только уменьшается, так как WACT - все таки объектный шаблонизатор и на его инициализацию требуется больше ресурсов, чем на обычный php-файл.
WACT - расширяемый шаблонизатор. Можно легко добавлять свои теги и фильтры, создавать целые пакеты со своими тегами или фильтрами, как например, это имеет место в пакете WEB_APP.
Механизмы поиска шаблонов и система настроек выполнена в виде набора интерфейсов и базовых классов. В простом случае возможностей базовой реализации будет вполне достаточно. Однако при необходомости, можно будет легко внедрить, например, кеширование шаблонов, в зависимости от языка, поиск тегов в каких-то определенных папках, сменить схему хранения шаблонов и т.д. В плане настроек WACT - очень гибок.
WACT - это
компонентый шаблонизатор. Это значит, что вы можете изменять состояние его компонентов во время исполнения через ООП
API. Это также значительно облегчает, например, работу с формами - элементы формы и сама форма - компоненты, однако в первоначальном шаблоне - это обычные html-теги и никакого дополнительного кода не требуется.
WACT полностью поддерживает работу с итераторами и объектными контейрами данных. Все базовые теги реализованы так, как если бы в данные в шаблонизатор приходили только в виде итераторов. Даже обычные массивы WACT обворачивает во внутреннюю форму итератора. Это имеет свой недостаток - несколько снижает скорость (см. ниже), но в целом дает множество удобств (если вы будете изучать Limb3, то эти преимущества станут быстро очевидными).
WACT позволяет очень свободно оперировать данными внутри шаблона. Данные можно не только выводить, но можно также легко передавать данные с одного уровня на другой, использовать одни и те же данные повторно и т.д. Причем вся логика по передаче данных может (не обязательно) находиться прямо в шаблонах и тоже выглядит как обычные теги.
Внутри WACT-а можно использовать обычные
php-вставки. Причем в этих вставках вы также можете взаимодействовать с шаблоном через его
API(ограниченно).
Limb3 пакет WEB_APP содержит большой набор раcширений, которые позволяет получать данные прямо из шаблона, легко передавать данные с уровня на уровень, сортировать данные, применять ограничения и т.д. Также есть средства, которые позволяют вызывать любые методы определенных объектов с передачей им необходимых параметров. Вы можете реализовать нечто похожее или воспользоваться нашими наработками.
Минусы WACT
В отличие от PHP шаблона(код с
HTML разметкой) WACT требует знаний своего синтаксиса и определенных идиом использования.
Все-таки, если скорость для вас - главное и вы ведете борьбу за каждую тысячную секунды, а кеширование невозможно - то native-php - это ваш выбор, а не WACT. Дело в том, что WACT работает с данными через дополнительные объекты, плюс требует парсинга небольшого количества базовых классов - эта особенность дает о себе знать в любом случае.
WACT не самый легкий для освоения шаблонизатор, который может в некоторых случаях работать неожиданным для вас способом. Такие понятия, как контексты, DBE и т.д. требуют времени на освоение. Иногда путаницу вводят обычные html-теги, такие как <form>, <input> которые могут обрабатываться WACT-ом и иметь дополнительное поведение, а могут и нет.
Почему так много плюсов и так мало минусов? Мы действительно считаем WACT весьма очень удачным продуктом. Если у вас есть возражения на этот счет - пишите в форум!
limb3_2007_4/ru/packages/wact/pros_and_cons.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)
Обсуждение