36 votes

Moteur de templates léger en Java

Je suis à la recherche d'un léger moteur de template en Java. Je veux donner à mes utilisateurs la possibilité de définir un modèle dans la ligne de:

"Some arbitrary text ${some_function(Some more text ${1}, function_param)} whatever"

Et le modèle sera compilé et rempli d'exécution. Les exigences sont les suivantes:

  • Modèle accepte tableau d'objets comme paramètres (et extrait à l'aide d'expressions telles que ${0} lorsque 0 est le nombre de paramètre)
  • Modèle dispose de fonctions de modifier leur contenu. Par exemple: ${trim(^^^bla bla ${0})} avec le paramètre ["bla^^^"] sera de retour "bla bla bla" (^ = space. Le site des bandes de mon des espaces supplémentaires)
  • Les fonctions peuvent accepter des paramètres. Par exemple ${substring(que ce soit, 4, 8)} retournera "jamais".
  • Les fonctions peuvent être imbriquées. Une fonction opère sur des données après la fonction interne a été évaluée.
  • Les fonctions sont extensibles, je veux être en mesure de définir ma propre.
  • Mon logiciel est intégré à d'autres systèmes de production, de sorte qu'il doit être aussi petite que possible (je ne veux pas d'un gigantesque cadre avec un petit moteur de template qui fait ce dont j'ai besoin).
  • De cette raison, la performance est un problème. Je peux me permettre de ralentir le temps de compilation, mais le gabarit-temps de remplissage doit être aussi rapide que possible.
  • Nous utilisons javaSE 1.4. Ne peut pas aller plus haut, c'est une de nos caractéristiques.

Je ne pense pas que c'est très compliqué exigence afin que je puisse écrire quelque chose comme moi-même, MAIS puisque c'est vraiment un marginal de la fonctionnalité de nos produits, je suis réticent à passer du temps sur elle, plus elle semble être d'une utilisation courante de cas, je pense que quelqu'un doit avoir fait cela avant.

J'ai regardé modèle-moteurs comme la Vitesse et StringTemplate et FreeMarker. Je pense qu'ils sont conçus pour produire des documents de grande taille avec des modèles, lorsque la performance n'est pas un problème. J'ai besoin de quelque chose de petit, simple et rapide.

Des idées?

36voto

mataug Points 2657

Je suis surpris que personne ne soit mentionné mustache

Cela présente un avantage évident, car nous pouvons utiliser le même moteur de template et la même syntaxe dans de nombreuses langues. Pas besoin d'apprendre une nouvelle langue de template pour le navigateur.

20voto

duffymo Points 188155

Velocity de Apache est un moteur de gabarit merveilleux.

12voto

atomiccoder Points 119

Essayez jade4j - une implémentation de jade écrite dans et pour Java. L'intention de jade4j est de pouvoir traiter les modèles de jade en Java sans recourir à un environnement JavaScript, tout en restant totalement compatible avec la syntaxe jade d' origine.

11voto

David Winslow Points 5224

http://freemarker.org/ est agréable et facile à utiliser.

10voto

zedoo Points 2386

Vous devriez regarder à nouveau StringTemplate .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X