Вопрос

В Grails существует два механизма модульности слоев представления: Шаблон и ТагЛиб.

Пока я пишу свое собственное приложение Grails, я часто сталкиваюсь с одним и тем же вопросом, когда мне нужно написать компонент пользовательского интерфейса: нужно ли мне использовать шаблон или TagLib?

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

  1. В чем основное различие между этими двумя механизмами?
  2. В каких сценариях вы используете TagLib вместо шаблона (и наоборот)?
Это было полезно?

Решение

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

  • Шаблоны отлично подходят для случаев, когда вам нужно отформатировать что-то конкретное для отображения.Например, если вы хотите отобразить объект домена определенным образом, обычно это проще сделать в шаблоне, поскольку вы в основном просто пишете HTML с помощью some .Он многоразовый, но я думаю, что его возможность повторного использования немного ограничена.То есть.если у вас есть шаблон, вы бы использовали его на нескольких страницах, а не на сотнях страниц.

  • С другой стороны, таглибы это меньшая функциональная единица, но вы с большей вероятностью будете использовать ее во многих местах.В нем вы, скорее всего, будете объединять строки, поэтому, если вы хотите создать сотню строк HTML, они менее удобны.Ключевая функция, которую позволяют taglibs, - это возможность внедрять сервисы / взаимодействовать с ними.Например, если вам нужен фрагмент кода, который вызывает службу аутентификации и отображает текущего пользователя, вы можете сделать это только в TagLib.В этом случае вам не нужно беспокоиться о передаче чего-либо в taglib - taglib пойдет и разберется с этим из сервиса.Вы также, вероятно, будете использовать это на многих страницах, поэтому удобнее иметь taglib, которому не нужны параметры.

  • Существует также несколько видов тегов, в том числе те, которые позволяют вам выполнять итерации по чему-либо в теле, иметь условные обозначения и т.д. - Это на самом деле невозможно с шаблонами.Как я сказал выше, хорошо проработанная библиотека taglib может быть использована для создания многоразового API, который делает ваш GSP код более читаемым.Внутри одного и того же *taglib.groovy у вас может быть несколько определений тегов, так что это еще одно отличие - вы можете сгруппировать их все в одном месте и вызывать из одного taglib в другой.

Кроме того, имейте в виду, что вы можете вызвать шаблон изнутри taglib, или вы можете вызвать taglibs с помощью шаблонов, так что вы можете смешивать и сочетать по мере необходимости.

Надеюсь, это немного прояснит для вас проблему, хотя на самом деле многое из этого зависит от того, какую конструкцию удобнее кодировать и как часто она будет использоваться повторно.

Другие советы

Что касается нас...

Предполагается, что программист должен видеть определенную логику представления объекта в шаблоне, а не где-либо еще.

Мы используем taglibs только для изолированных элементов страницы, вообще не связанных с бизнес-логикой.На самом деле, мы стараемся свести к минимуму их использование:слишком просто написать бизнес-логику в taglib.

Шаблоны - это общепринятый способ использования;например, они поддерживают макеты (кстати, их можно назвать третьим механизмом).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top