Подтвердить что ты не робот

Grails: Шаблоны против TagLib.

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

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

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

  • В чем основное различие между двумя механизмами?
  • В каких сценариях вы используете TagLib вместо шаблона (и наоборот)?
4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

Как нам...

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

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

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