2010-04-10 5 views
6

Je cherche un moteur de template. Conditions requises:Recommandations de moteur de modèle

  • Exécute sur une machine virtuelle Java. Java est bon. Jython, JRuby et similaires, aussi ...
  • Peut être utilisé en dehors des servlets (contrairement à JSP)
  • Est flexible par rapport aux servlets. où les modèles sont stockés (JSP et beaucoup de gens exigent que les modèles soient stockés dans le FS). Il doit fournir une interface de chargement de modèle que l'on peut mettre en œuvre ou quelque chose comme ça
  • inclusion facile de Templates- paramétrés Je aime vraiment les fragments de balises JSP
  • Bon docs, beau code, etc., les suspects habituels

J'ai regardé JSP - c'est presque parfait sauf pour le couplage servlet et système de fichiers, Stringtemplate - J'adore la syntaxe du template, mais ça échoue sur le couplage du système de fichiers, la documentation manque et les groupes de templates sont confus, GXP, TAL

Des idées, des pensées?

+0

duplication possible de [Suggestions pour un moteur de modèle basé sur Java?] (Http://stackoverflow.com/questions/174204/suggestions-for-a-java-based-templating-engine) – ripper234

Répondre

2

Comment sur Velocity?

  • Java complet
  • ne nécessite pas servlets
  • il a fichier, pot, classpath & chargeurs de ressources URL (et peut-être plus)
  • modèles peuvent inclure d'autres modèles (si c'est ce que vous entendez)
  • a de bons tutoriaux, jusqu'à présent, je pouvais obtenir ce que je avais besoin de la documentation
2

Si ma mémoire est bonne, FreeMaker est décent - Supposons être une sorte de "Velocity, la prochaine génération".

0

vérifier peut-être sur "JSTP", http://jstp.sourceforge.net/manual.html

sa syntaxe est sous-ensemble de JSP, donc support IDE est excellent. Un modèle "jstp" est traduit en une classe Java simple au moment de la construction. il n'y a pas de dépendance à l'exécution.

Les "paramètres" d'un modèle doivent être transmis par les champs membres. typage statique tout le chemin.

Bar.jstp

<%!           
    public String name;      
%> 

Hello <%= name %> 

build convertit en Bar.java

public class Bar           
{              
    public String name;         
    public void render(java.io.PrintWriter out)   
    {             
     out.print("Hello ");        
     out.print(String.valueOf(name));     
     ...            
    }             
} 

et vous invoquez le modèle par

Bar bar = new Bar();        
bar.name = "John";        
bar.render(..);  

avec "hotswap" typique vous ne devriez pas avoir à redémarrer servir lors de l'édition du modèle.

0

Qu'en est-il de Snippetory?

  • Il est plein java, (même votre logique est écrit en java!)
  • Les modèles sont chargés par le UriResolver, avec les mises en œuvre pour calsspath, système de fichiers et URL.
  • Il peut être utilisé en dehors des servlets, par exemple en tant que modèle ad hoc tel que String.format.
  • Il est entièrement basé sur l'inclusion paramétrée de modèles.
  • Les docs sont ok et c'est beaucoup plus simple que les moteurs basés sur les scripts, donc vous n'avez vraiment pas besoin de beaucoup.
  • Et une nouvelle version avec great new freatures est à venir bientôt, je pense que
0

Essayez Mixer2. http://mixer2.org/ Mixer2 n'a aucune dépendance pour servlet-API. Vous pouvez stocker le modèle sur String, java.io.File et java.io.InputStream.

0

Chunk, mon moteur de template pour Java, serait un bon choix.

  • Léger.
  • Excellents documents avec des exemples et des recettes: http://www.x5software.com/chunk
  • Autonome - aucune servlet requise.
  • Modèles à partir du système de fichiers, classpath, chaînes, webserver, or write your own template provider.
  • Basé sur des modèles simples avec {$ tags}.
  • Les modèles peuvent inclure d'autres modèles ou même les exécuter en tant que macros avec un dictionnaire au format json de valeurs de variable.
  • Bouclage, conditionnels, filtres, tous les goodies typiques.
0

Je suis l'auteur de Pebble qui correspond assez bien à vos critères.

+0

Je suggère d'expliquer pourquoi cette bibliothèque fonctionnerait pour l'utilisateur, à l'heure actuelle, il s'agit essentiellement d'une réponse de type lien uniquement considérée comme de faible qualité. – Taryn

Questions connexes