Motori di template Python: quali sono i reali vantaggi e svantaggi di XML rispetto alla sintassi personalizzata

3

Sono interessato a sapere quali sono le reali differenze (vantaggi e svantaggi) tra i due tipi di motori di template python; XML (come Genshi o Kid) e una sintassi personalizzata (come Cheetah o Jinja2).

Non sto cercando ciò che è meglio o una raccomandazione. Capisco che nessuna soluzione sarà perfetta e che la soluzione migliore dipenderà dal problema. Voglio capire meglio le differenze tra i due tipi prima di sceglierne uno per il mio problema.

Questo elenco potrebbe non essere applicabile a tutte le soluzioni di template.

Vantaggi XML:

  • Utilizza l'XML, è per lo più familiare agli sviluppatori. Ci sono alcuni nuovi elementi (ifelse, logica di flusso) da imparare.
  • Funziona con gli strumenti XML esistenti.
  • È più potente in quanto è ben informato sui dati su cui si sta lavorando. (Genshi è sensibile al contesto)

Svantaggi XML:

Vantaggi della sintassi personalizzata:

  • È veloce rispetto ai motori basati su XML. (vedi link precedente)
  • È una sintassi semplice e potente che dovrebbe essere più facile da imparare.

Svantaggi della sintassi personalizzata:

  • È un'altra sintassi da imparare.
  • Potrebbe non funzionare correttamente con gli strumenti XML esistenti.
posta Supermighty 08.07.2011 - 14:45
fonte

3 risposte

4

Penso che la considerazione dovrebbe probabilmente riguardare il modo in cui i template verranno scritti. Il punto dei modelli è quello di assicurarsi che le persone non stiano più codificando a mano (html, LaTeX, xml, qualunque cosa). Ecco perché i motori di modelli consentono l'ereditarietà e altre caratteristiche fantasiose.

Quindi, Daniel Roseman ha ragione quando dice che far sì che gli umani scrivano XML sia malvagio. In una certa misura, stai usando i modelli in modo da non doverlo fare.

Con questo in mente, la differenza più grande che ho visto tra i motori di template python non è, in effetti, se usano XML o qualche sintassi personalizzata. La grande differenza sembra essere se i motori di template consentano o meno l'inclusione di codice python arbitrario nel template.

Hai menzionato sia Cheetah che Jinja2. Entrambi hanno una sintassi speciale, ma Cheeta consente di incorporare praticamente il pitone arbitrario nel modello, mentre Jinja2 pone pesanti restrizioni su ciò che può essere fatto con il modello. Ora stai cercando un compromesso tra la combinazione di business e logica di presentazione, rendendo il tuo modello chiaro e conciso.

Alla fine, i benefici arriveranno da quanto è facile leggere, scrivere, rileggere e riscrivere il codice.

    
risposta data 08.07.2011 - 18:30
fonte
9

L'unico principio fondamentale: convincere gli umani a scrivere XML è malvagio.

    
risposta data 08.07.2011 - 14:49
fonte
0

Penso che i tuoi pro / contro siano problematici

XML: It's slow.

questo non è necessariamente vero. Come in Jinja, potresti compilare un modello XML. Forse genshi lo fa già.

XML: it's familial to developers

anche non vero. come fare un ciclo in XML? Come estendere un modello di base? Dipende dal modello, ovviamente. Quindi, devi ancora imparare, e la sintassi XML non aiuta.

Custom: It's another syntax to learn.

come detto sopra, devi comunque imparare una nuova sintassi e, con i linguaggi personalizzati, la sintassi potrebbe essere un po 'più confortante, ad esempio con le istruzioni "altro". ricorda anche che non solo i programmatori, ma i designer con un punto di vista meno tecnico potrebbero dover utilizzare il modello.

Custom: It might not work smoothly with existing toolchains.

Questo può essere vero anche per XML: probabilmente vuoi HTML come output, che è (quando non vai per XHTML) senza XML. Ma il tuo punto è vero, e per me è la risposta: i diversi approcci rispondono a bisogni / strumenti diversi.

I bisogni e i toolchain sono principalmente determinati dall'output atteso. Se devi fornire un XML valido, usa XML-Templating, altrimenti no.

    
risposta data 11.07.2011 - 13:48
fonte

Leggi altre domande sui tag