2011-08-25 5 views

risposta

24

Vorrei presentare il mio lavoro: Rythm template engine, un motore di template leggero e super veloce in Java usando la sintassi simile a Razor. Rythm ha funzionalità avanzate e supporta il layout/l'ereditarietà delle pagine, i tag personalizzati (in template o java), il ricaricamento dinamico in modalità dev e molto altro.Lo benchmark mostra che Rythm è 2 o 3 volte più veloce di Velocity su una pagina normale!

L'API è semplice:

  1. rendere con stringa di linea:

    String output = Rythm.render("@args String who;hello @who!", "world");

  2. rendere con file di modello:

    String output = Rythm.render("hello.txt", "world");

Una breve introduzione al Rythm: http://software-lgl.blogspot.com.au/2012/03/rythm-easy-to-use-high-performance-java.html

Aggiornamenti 20120701

L'ultima versione ha introdotto una funzione chiamata "String Interpolation Mode", che consentono di farlo molto leggero interpolazione stringa come segue:

String result = Rythm.render("hello @who!", "world"); 

A dimostrazione di tutte le funzionalità è ospitato su GAE: http://play-rythm-demo.appspot.com/

aggiornamenti del sito web 20130406

Un ritmo violino è ora on-line, ed è possibile utilizzarlo per imparare la sintassi Rythm. Check it out a http://fiddle.rythmengine.org

Aggiornamenti 20130513

  • nome del pacchetto modificato da com.greenlaw110.rythm a org.rythmengine, l'ID del gruppo Maven modificato di conseguenza
  • Acquista il nuovo sito web del progetto: http://rythmengine.org
+1

Bello, sembra promettente! –

+0

Rilasciato Rythm 1.0.0-RC1. Con molte delle fantastiche funzionalità. Che dire di cache un risultato di tag senza escape e assegnarlo a una variabile per un uso successivo come '@myTag (...). Cache (" 3mn "). Raw(). Assign (" myTagResult ") ... @ myTagResult.escape ("html") '. Controlla di più su http://software-lgl.blogspot.com.au/2012/04/playrythm-100-rc1-released.html –

+0

sembra che il tuo prodotto non sia più mantenuto attivamente (a giudicare dalla mancanza di attività su github)? – sawe

2

Prova a dare un'occhiata a velocity (http://velocity.apache.org)

4

Primavera supporta un certo numero di linguaggi di template:

Per ulteriori informazioni su come integrare Spring, vedere this page.

Inoltre, c'è StringTemplate, che, pur non referenziato nella documentazione ufficiale di primavera, can be used come motore di modelli Spring.

E se si in realtà si vuole scatenare, here's a page con circa un miliardo di altri motori di template.

+1

Questa è la migliore risposta, anche se nessuno di questi hanno lo stesso codice intelligente stile rasoio vs parsing del codice HTML che lo rendono una tale gioia da usare. –

7

Per quanto ne so, non c'è nessuno che sembri e si comporti proprio come Razor in quel mondo Java.

Da quello che posso capire, il motore di template in Razor non solo analizza i "segnaposto" nel testo statico, come #xxx in Velocity o ${xxx} in JSP.

Invece il simbolo @ in Razor funge da interruttore per passare al parser della lingua di hosting (VB e C# in caso di Razor), riconoscendo la sintassi completa dell'elemento immediatamente dopo il segno @. Ciò consente a Razor di riconoscere sia i nomi degli oggetti passati al motore che le strutture sintattiche come loop e condizionali.

Questo apre la piena potenza del linguaggio di hosting per TE modelli di rasoio, che può essere una cosa pericolosa in mani sbagliate ...

La maggior parte dei motori di template nel lato Java del mondo hanno consapevolmente scelto separare strettamente la logica di business dalle preoccupazioni relative ai modelli e quindi avere un supporto molto limitato o nullo per le caratteristiche dinamiche come il loop o condizionali nei loro "linguaggi" di template, optando per uno stile dichiarativo su dinamico.

3

Dai uno sguardo a twirl, il separa del motore del modello di framework Play dalla struttura.

Esempio:

@if(items.isEmpty) { 
    <h1>Nothing to display</h1> 
} else { 
    <h1>@items.size items!</h1> 
}