Il y a certainement des chevauchements, mais vous trouverez ci-dessous plusieurs éléments à prendre en compte. Une façon d'y penser est que Template est comme une réutilisation au niveau de la méthode, tandis que les TagLibs sont plus pratiques pour la réutilisation au niveau de l'API.
-
Modèles sont parfaits lorsque vous devez formater quelque chose de spécifique pour l'affichage. Par exemple, si vous voulez afficher un objet de domaine d'une manière spécifique, il est généralement plus facile de le faire dans un modèle, puisque vous vous contentez d'écrire du HTML avec quelques . C'est réutilisable, mais je pense que cette réutilisation est un peu limitée. Par exemple, si vous avez un modèle, vous l'utiliserez dans plusieurs pages, pas dans des centaines de pages.
-
D'un autre côté, taglibs est une unité de fonctionnalité plus petite, mais que vous êtes plus susceptible d'utiliser dans de nombreux endroits. Vous êtes susceptible d'y concaténer des chaînes de caractères, donc si vous cherchez à créer une centaine de lignes de HTML, ils sont moins pratiques. Une caractéristique clé des taglibs est la possibilité d'injecter/interagir avec des services. Par exemple, si vous avez besoin d'un morceau de code qui appelle un service d'authentification et affiche l'utilisateur actuel, vous ne pouvez le faire que dans une TagLib. Dans ce cas, vous n'avez pas à vous soucier de transmettre quoi que ce soit à la Taglib - celle-ci se chargera de le découvrir auprès du service. Vous êtes également susceptible d'utiliser cette fonction dans de nombreuses pages, il est donc plus pratique d'avoir une taglib qui n'a pas besoin de paramètres.
-
Il existe également plusieurs types de taglibs, y compris ceux qui permettent d'itérer sur quelque chose dans le corps, d'avoir du conditionnel, etc. ce qui n'est pas vraiment possible avec les modèles. Comme je l'ai dit plus haut, une bibliothèque de taglib bien conçue peut être utilisée pour créer une API réutilisable qui rend le code de votre SGP plus lisible. A l'intérieur d'un même *taglib.groovy, vous pouvez avoir plusieurs définitions de tags, c'est donc une autre différence - vous pouvez les regrouper en un seul endroit, et appeler d'un taglib à un autre.
N'oubliez pas non plus que vous pouvez appeler un modèle à partir d'un taglib, ou que vous pouvez appeler des taglibs à partir de modèles, ce qui vous permet de combiner les deux selon vos besoins.
J'espère que cela vous a éclairci un peu les choses, bien que tout dépende en grande partie de la construction la plus pratique à coder et de la fréquence à laquelle elle sera réutilisée.