Pergunta

Nos Grails, existem dois mecanismos para modularidade nas camadas de vista: Modelo e Taglib.

Enquanto escrevo meu próprio aplicativo de Grails, muitas vezes estou enfrentando a mesma pergunta quando preciso escrever um componente da interface do usuário: Preciso usar um modelo ou um taglib?

Depois de pesquisar na web, não encontrei muito Melhores Práticas Ou regras práticas sobre essa decisão de design, então você pode me ajudar e me dizer:

  1. Qual é a principal diferença entre os dois mecanismos?
  2. Em quais cenários você usa um taglib em vez de um modelo (e vice-versa)?
Foi útil?

Solução

Definitivamente, há alguma sobreposição, mas abaixo estão várias coisas em que pensar. Uma maneira de pensar sobre isso é que o modelo é como uma reutilização em nível de método, enquanto o Taglibs é mais conveniente para a reutilização do nível da API.

  • Modelos são ótimos para quando você precisa formatar algo específico para exibição. Por exemplo, se você for exibido para exibir um objeto de domínio de uma maneira específica, normalmente é mais fácil fazê -lo em um modelo, já que você está basicamente apenas escrevendo HTML com alguns. É reutilizável, mas acho que é uma reutilização um pouco limitada. Ou seja, se você tiver um modelo, o usaria em várias páginas, não em centenas de páginas.

  • Por outro lado, taglibs é uma unidade de funcionalidade menor, mas é mais provável que você use em muitos lugares. Nele, é provável que você concatença strings; portanto, se você deseja criar cem linhas de HTML, elas são menos convenientes. Um importante recurso que os taglibs permitem é a capacidade de injetar / interagir com os serviços. Por exemplo, se você precisar de um código que chama um serviço de autenticação e exiba o usuário atual, só poderá fazer isso em um taglib. Você não precisa se preocupar em passar nada para o taglib neste caso - o Taglib irá descobrir isso do serviço. É provável que você também use isso em muitas páginas, por isso é mais conveniente ter um taglib que não precisa de parâmetros.

  • Existem também vários tipos de taglibs, incluindo aqueles que permitem que você itera algo no corpo, tenha condicional etc. - isso não é realmente possível com modelos. Como eu disse acima, uma biblioteca Taglib bem trabalhada pode ser usada para criar uma API reutilizável que torne seu código GSP mais legível. Dentro da mesma *taglib.groovy, você pode ter várias definições de tags, então essa é outra diferença - você pode agrupar todas elas em um local e ligar de um taglib para outro.

Além disso, lembre -se de que você pode chamar um modelo de dentro de um taglib, ou pode chamar os modelos Taglibs com modelos, para que você possa misturar e combinar conforme necessário.

Espero que isso esclareça um pouco para você, embora muito disso seja o que a construção é mais conveniente para codificar e com que frequência será reutilizada.

Outras dicas

Quanto a nós ...

Um codificador deve ver a lógica de apresentação de objetos específica no modelo, não em qualquer outro lugar.

Usamos Taglibs apenas para elementos de página isolados, não relacionados à lógica de negócios. Na verdade, tentamos minimizar o uso deles: é muito fácil escrever a lógica de negócios em um taglib.

Os modelos são o caminho convencional; Por exemplo, eles suportam layouts (btw, podem ser nomeados um terceiro mecanismo)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top