2010-11-09 6 views
22

Ich versuche, Freemarker und Geschwindigkeit zu entscheiden zwischen als Template-Engine zu verwenden, irgendwelche Vorteile/Nachteile Sie jeder sehen in Bezug auf?Freemarker gegenüber der Geschwindigkeit

Alle Alternativen, die ich stattdessen aussehen sollte?

+3

Es wurde gefragt, aber dieser bekam eine bessere Antwort. – Speck

Antwort

35

Velocity und Freemarker sind beide durchaus fähig. Quälen Sie sich nicht über die Wahl. Sie haben ziemlich unterschiedliche Prioritäten hinter ihrem Design. Wenn Sie also über das einfache Templating hinausgehen, sind ihre Feature-Sets schwer zu vergleichen. Die Syntax von Velocity ist einfacher und ausgeprägter, die schwerere Syntax von Freemarker erlaubt ihnen, JSP-Bibliotheken zu unterstützen. Velocity bietet mehr Freiheit und letztendlich mehr Funktionen durch Add-on-Projekte wie VelocityTools. Freemarker bietet eine viel bessere native Whitespace-Handhabung, kürzliche Velocity-Versionen bieten interessantere Inhaltskontrollen (#define, #evaluate, # [[literal block]] #).

Was die Leistung anbelangt, hat Velocity in den letzten Jahren große Fortschritte gemacht, außer vielleicht beim ersten Template-Parser. Aber für jede vernünftige App, bei der die Leistung eine Rolle spielt, sollten beide Engines auf Cache-Vorlagen eingestellt sein und nur einmal analysiert werden, was dies weniger problematisch macht. Im Allgemeinen werden Sie feststellen, dass Ihre Leistung bei beiden Engines wesentlich mehr von der Art Ihrer Templates als von den Unterschieden zwischen den Engines abhängt.

StringTemplate ist auch respektabel, obwohl sie MVC Nazis sind und Velocity oder Freemarker für Features nicht übereinstimmen können.;) Ihre potentielle Enttäuschung ist dort ein bisschen höher als bei einer der bekannteren Template-Engines, von denen keines wohl sehr enttäuschen wird. Greifen Sie einfach und gehen Sie.

+0

** "Quälen Sie sich nicht mit der Wahl." ** Gut geschrieben! – Stephan

8

Ich bevorzuge FreeMarker. Ich liebe die Dokumentation, ich kann immer finden, was ich brauche. Insgesamt denke ich, dass es sehr kraftvoll ist.

String Template ist eine weitere Alternative.

+2

Auch dieser Vergleich ist veraltet und vergleicht nur die Basisfunktionen, wobei die verschiedenen leistungsfähigen Add-on-Projekte von Velocity ignoriert werden. Der Freemarker-Community wird nicht zugesichert, dass sie sie nicht aktualisieren. –

+0

@Nathan Bubna - Ich habe die Geschwindigkeit manchmal nicht wirklich benutzt, was genau ist veraltet in diesem Vergleich? – Andy

+0

Die Mehrheit davon, mehr als ich hier hinweisen kann. Es basiert auf Velocity 1.2, wie vor 9 Jahren. Velocity 1.7 ist in der Beta und wird bald endgültig sein. Es scheint auch zu bedeuten, dass Dinge wie VelocityTools "Workarounds" sind, was kaum eine faire Bewertung ist. –

2

Es gibt eine lengthy comparison auf der Freemarker-Projektseite.

Niemals mit Geschwindigkeit gearbeitet, kann ich die beiden nicht sinnvoll vergleichen, aber ich war so zufrieden mit freemarker, dass ich keinen Grund sah, darüber hinaus zu schauen.

+1

Dieser langwierige Vergleich war vielleicht für Velocity 1.4 gültig, aber Velocity hat seitdem viel hinzugefügt. Und dieser Vergleich hat es immer abgelehnt, die Existenz des beliebten VelocityTools-Projekts anzuerkennen, das immer eine Fülle von Funktionen zur Verfügung gestellt hat. –

+1

Korrektur, dieser Vergleich galt für Velocity 1.2. Der Großteil davon wird jetzt in Velocity unterstützt (obwohl manchmal anders implementiert), der Großteil des Rests wird mit VelocityTools unterstützt. Und einige der "Vergleiche" sind einfach komisch. Velocity benötigt keine Java-unabhängigen Funktionen, wenn wir die Java-Funktionen einfach unterstützen. –

+0

Der Link zum "ausführlichen Vergleich" ist tot – domih

5

Es sieht aus wie this ist ein anständiger Rundown des Vergleichs. Obwohl es ein paar Jahre alt ist.

Aus dem Artikel:

Abschließend

Sowohl Freemarker und Geschwindigkeit sind sehr fähig Template-Engines. Geschwindigkeit scheint eine größere Nutzerbasis, wahrscheinlich aufgrund der Tatsache zu genießen, dass es Teil des Apache-Projektes. Wie ich in diesem Artikel gezeigt haben, obwohl, ist Freemarker die anspruchsvollere und schneller von den beiden. In grundlegenden Operationen sind beide Vorlagen-Engines fast ähnlich und bieten eine API, die ist einfach zu verstehen.

Sowohl Geschwindigkeit und Freemarker sind ziemlich einfach in eine Anwendung zu integrieren und eine gute Leistung bieten auf kleine Vorlagen. Velocity verlangsamt nach unten beim Analysieren größerer Vorlagen, , die Sie berücksichtigen können, wenn eine Vorlagenengine für Ihr Projekt auswählen.

0

Freemarker läuft nicht auf Android. Daher konvertiere ich gerade mein Projekt zu Velocity, um es kompatibel zu mobilen Geräten zu machen.