Domanda

In Grails, ci sono due meccanismi per modularità negli strati vista:. modello e TagLib

Mentre sto scrivendo il mio Grails app, mi viene spesso affrontando la stessa domanda quando ho bisogno di scrivere un componente dell'interfaccia utente:? ho bisogno per utilizzare un modello o un TagLib

Dopo la ricerca sul web, non ho trovato un sacco di best practice o regole empiriche riguardo a questa decisione di progettazione, in modo che vi possono aiutare e mi dicono:

  1. Qual è la differenza principale tra i due meccanismi?
  2. In quali scenari, si usa un TagLib invece di un modello (e viceversa)?
È stato utile?

Soluzione

C'è sicuramente qualche sovrapposizione, ma al di sotto sono diverse cose a cui pensare. Un modo di pensare a questo proposito è che modello è come un riutilizzo a livello di metodo, mentre Taglibs sono più conveniente per livello di API riutilizzo.

  • Modelli sono l'ideale per quando si deve formattare qualcosa di specifico per la visualizzazione. Per esempio, se si wan per visualizzare un oggetto di dominio in modo specifico, in genere è più facile farlo in un modello, dal momento che sono fondamentalmente solo scrivendo HTML con un po '. E 'riutilizzabile, ma penso che il suo riutilizzo in un po' limitato. Cioè se si dispone di un modello, che ci si utilizzarlo in diverse pagine, non in centinaia di pagine.

  • D'altra parte, taglibs è un'unità più piccola di funzionalità, ma quello che si hanno maggiori probabilità di utilizzare in molti posti. In esso si rischia di concatenare le stringhe, quindi se si sta cercando di creare un centinaio di righe di codice HTML, sono meno convenienti. Una caratteristica fondamentale taglibs permettono è la capacità di iniettare / interagire con i servizi. Ad esempio, se avete bisogno di un pezzo di codice che richiama un servizio di autenticazione e visualizza l'utente corrente, si può fare solo che in un TagLib. Non dovete preoccuparvi di passare nulla al taglib in questo caso - taglib andrà e capirlo dal servizio. Lei è anche probabile che l'uso che in molte pagine, quindi è più conveniente avere un taglib che non ha bisogno parametri.

  • Ci sono anche diversi tipi di taglibs, compresi quelli che consentono di iterazioni su qualcosa nel corpo, hanno condizionato, ecc - che è Non davvero possibile con i modelli. Come ho detto sopra, un pozzo-artigianale biblioteca taglib può essere utilizzato per creare API riutilizzabile che rende il vostro GSP codice più leggibile. All'interno dello stesso * taglib.groovy è possibile avere più definizioni dei tag, in modo che è un'altra differenza - è possibile raggrupparli tutti in una volta posto, e chiamare da un taglib in un altro.

Inoltre, tenete a mente che è possibile richiamare un modello all'interno di un taglib, oppure è possibile chiamare taglibs withing modelli, in modo da poter combinare in base alle esigenze.

Spero che questo libera per voi un po ', anche se in realtà un sacco di questo è ciò che costrutto è più conveniente per il codice e la frequenza sarà riutilizzato.

Altri suggerimenti

Per quanto ci riguarda ...

Un coder dovrebbe vedere la logica specifica oggetto di presentazione in template, non altrove.

Usiamo taglibs solo per gli elementi della pagina isolati, non legati alla logica di business a tutti. In realtà, si cerca di ridurre al minimo il loro utilizzo: è troppo facile scrivere la logica di business in un taglib

.

I modelli sono il modo convenzionale di andare; per esempio, essi supportano Layout (a proposito, possono essere denominati un terzo meccanismo)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top