Ответ 1
Существует определенно некоторое совпадение, но ниже есть несколько вещей, о которых нужно подумать. Один из способов подумать о том, что Template похож на повторное использование уровня метода, а TagLibs более удобны для повторного использования на уровне API.
-
Шаблоны отлично подходят, когда вам нужно отформатировать что-то конкретное для отображения. Например, если вы хотите отобразить объект домена определенным образом, как правило, это проще сделать в шаблоне, поскольку вы в основном просто пишете HTML с некоторыми. Он многоразовый, но я думаю, что его повторное использование немного ограничено. То есть если у вас есть шаблон, вы будете использовать его на нескольких страницах, а не на сотнях страниц.
-
С другой стороны, taglibs - это меньшая единица функциональности, но с большей вероятностью будет использоваться во многих местах. В нем вы, скорее всего, соедините строки, поэтому, если вы хотите создать сотню строк HTML, они менее удобны. Ключевой особенностью taglibs является возможность впрыскивать/взаимодействовать с сервисами. Например, если вам нужен фрагмент кода, который вызывает службу проверки подлинности и отображает текущего пользователя, вы можете сделать это только в TagLib. Вам не нужно беспокоиться о передаче чего-либо в taglib в этом случае - taglib пойдет и выяснит это из службы. Вы также можете использовать это на многих страницах, поэтому более удобно иметь taglib, который не нуждается в параметрах.
-
Существует также несколько видов taglib, включая те, которые позволяют вы перебираете что-то в тело, условное и т.д. - это на самом деле невозможно с шаблонами. Как я сказал выше, хорошо продуманный Библиотека taglib может использоваться для создания повторно используемый API, который делает ваш GSP код более читабельный. Внутри того же * taglib.groovy вы можете иметь несколько определений тегов, так что другое различие - вы можете группировать их все в одном месте и вызывать из одного taglib в другое.
Кроме того, имейте в виду, что вы можете вызвать шаблон из taglib или вы можете вызвать taglibs с шаблонами, чтобы вы могли смешивать и сопоставлять по мере необходимости.
Надеюсь, это немного облегчит вам, хотя на самом деле многое из того, что конструкция более удобна для кодирования и как часто она будет использоваться повторно.