2012-05-24 6 views
1

Что является лучшей практикой при расширении синтаксиса Velocity. Доступны два механизма: директивы и макросы. Оба выглядят одинаково мощными. Директивам требуется фактическая разработка кода Java, а макросы - всего лишь фрагменты синтаксиса Velocity.Velocity Macros vs. Директивы

Преимущества директив в том, что, поскольку они написаны на Java, вам не нужно разбирать дополнительный синтаксис Velocity, содержащийся в макросе. Это делает расширение Velocity более формальным и останавливает множество неконтролируемых дополнений.

Что касается плюса для макросов, я считаю это очень гибким и позволяет много повторного использования, поскольку общие шаблоны обнаруживаются во время разработки приложения.

Итак, ваши мысли в этой области были бы очень желанными.

ответ

2

На самом деле есть и третий способ. Но сначала ...

Директивы предназначены для того, чтобы делать что-либо с частью шаблона или с элементами, которые требуют осознания шаблона вокруг них. Например, вы можете создать директиву, которая преобразует вывод раздела, который он каким-то образом ограничивает. И они обеспечивают это функциональное, шаблонно-ориентированное поведение в глобальном, всегда на виду.

Макросы не были предназначены для функций. Они лучше всего используются для повторения содержимого или разметки. Они созданы для того, чтобы вы никогда не помещали какой-либо язык разметки (или еще что-то), который вы выводили в код Java, или повторяли разделы VTL снова и снова.

Третий способ называется «инструменты». В проекте VelocityTools есть много из них, которые вы можете использовать или использовать в качестве примеров, не говоря уже о коде поддержки для очень простого управления инструментом. В любом случае, инструменты предназначены в первую очередь для доступа к данным или их обработки. Не создавайте директиву или макрос, который форматирует число. Используйте инструмент. Инструменты предоставляют интерфейс, совместимый с VTL, с библиотеками и API-интерфейсами, которые в противном случае трудно использовать в шаблонах. Они могут контролироваться и контролироваться таким образом, чтобы директивы и макросы никогда не могли.

Все три очень полезны для разных вещей. Короче говоря:

  • директивы лучше всего подходят для манипулирования AST или вывод разделов шаблона
  • макросы лучше для не повторять себя или позволить разметки проникнуть в Java код
  • инструменты лучше всего подходят для доступа и манипулирование данные в шаблоне
+0

Большое спасибо за хорошее резюме опций. Я неплохо посмотрел на Velocity Tools, и там много возможностей. благодаря – user1414289