Comparison of web template engines

Last updated

The following table lists the various web template engines used in Web template systems and a brief rundown of their features.

Contents

Engine (implementation) [a] Languages [b] License [c] Variables [d] Functions [e] Includes [f] Conditional inclusion [g] Looping [h] Evaluation (language) [i] Assignment [j] Errors and exceptions [k] i18n [l] Natural templates [m] Inheritance [n]
Apache Velocity Java, C# Apache YesYesYesYesYesYesYesYesNoNoNo
ASP.NET (Microsoft) C#, VB.NET Proprietary YesYesYesYesYesYesYesYes ? ? ?
ASP.NET (Mono) C# LGPL YesYesYesYesYesYesYesYes ? ? ?
Laravel Blade PHP MIT YesYesYesYesYesYesYesYesYesNoYes
CheetahTemplate Python MIT YesYesYesYesYesYesYesYesNoNoYes
CodeCharge Studio Classic ASP, C#, VB.NET, PHP, Perl, Java/JSP, ColdFusion Proprietary YesYesYesYesYesYesYesNoYesYes ?
ColdFusion CFML, CFScript Proprietary YesYesYesYesYesYesYesYesYesYesYes
CTPP C, C++, Perl, PHP, Python BSD-likeYesYesYesYesYesNoNoYesNoYesNo
Django Python BSD-likeYesYesYesYesYesYesYesYesYesNoYes
Epsilon Generation Language Java Eclipse Public License YesYesYesYesYesYesYesYesNoYesNo
EJS JavaScript VariousYesYesYesYesYesYesYesYesYesYesYes
eRuby Ruby GNU GPL / Ruby License YesYesYesYesYesYesYesYesYesYesNo
FreeMarker Java Apache YesYesYesYesYesYesYesYesYesNoNo
Genshi (templating language) Python BSD-likeYesYesYesYesYesYes (Python)YesYesYesYesNo
Go templates Go BSD YesYesYesYesYesYesYesYesYesYesNo
Haml Ruby, PHP (WIP) MIT YesYesYesYesYesYes (Ruby)YesYesYesNoNo
Hamlets Java BSD YesYesYesYesYesNoYesYes ? ? ?
JavaServer Pages Java CDDL + GNU GPL [1] YesYesYesYesYesYesYesYes ?Yes ?
Jinja Python BSD YesYesYesYesYesYes (Python)YesNoYesNoYes
Jinja2 Python BSD YesYesYesYesYesYes (Python)YesYesYesNoYes
Tera Rust MIT YesYesYesYesYesNoYesYesNoNoNo
Kid Python MIT YesYesYesYesYesYes (Python)YesYesNoYesNo
Lucee CFML LGPL YesYesYesYesYesYes (CFML)YesYesYesYesYes
Mako Python MIT YesYesYesYesYesYes (Python)YesYesYesNoYes
Mustache 30+ languages MIT YesYesYesYesYes (foreach)NoNoYesYesYesNo
Open Power Template PHP 5BSD-likeYesYesYesYesYesYes (PHP)YesYesNoYesYes
PHP PHP PHP License YesYesYesYesYesYesYesYesYesYesNo
Pug JavaScript MIT [2] YesYesYesYesYesYes (JavaScript)YesYesNoNoYes
Razor C#, F#, VB.NET Apache YesYesYesYesYesYesYesYesYesYesYes
Smarty PHP LGPL YesYesYesYesYesYes (PHP)YesYes?YesNoYes
Slim Ruby MIT [3] YesYesYesYesYesYesYesYesNoNoYes
Template Attribute Language Variousopen sourceYesYesYesYesYesYesYesYesNoYes ?
Template Toolkit Perl, Python Perl YesYesYesYesYesYes (Perl)YesYesNoNoYes
Thymeleaf Java Apache YesYesYesYesYesYesYesYesYesYesNo
Twig PHP BSD YesYesYesYesYesNoYesYesYesNoYes
web2py Python LGPL3 YesYesYesYesYesYesYesYesYesYesYes
WebMacro Java Apache, GNU GPL YesYesYesYesYesYesYesYes ? ? ?
Engine (implementation) [a] Languages [b] License [c] Variables [d] Functions [e] Includes [f] Conditional inclusion [g] Looping [h] Evaluation (language) [i] Assignment [j] Errors and exceptions [k] i18n [l] Natural templates [m] Inheritance [n]

See also

Notes

  1. 1 2 Engine (implementation) : engine name
  2. 1 2 Languages : implementation language of the engine (not the template script language)
  3. 1 2 License : Software license agreement
  4. 1 2 Variables : script language power to use variables
  5. 1 2 Functions : script language power to use functions
  6. 1 2 Includes : script language power include external files
  7. 1 2 Conditional inclusion : script language power to conditional includes
  8. 1 2 Looping : script language power to do loops (for, while) or recursion
  9. 1 2 Evaluation (language) : script language power to do "eval command" (to the implementation language)
  10. 1 2 Assignment : set names and references to sub-templates (?)
  11. 1 2 Errors and exceptions : engine output script errors.
  12. 1 2 i18n : Internationalization and localization feature
  13. 1 2 Natural templates : the template can be a document as valid as the final result, the engine syntax doesn't break the document's structure
  14. 1 2 Inheritance : Supports the ability to inherit a layout from a parent template, separately overriding arbitrary sections of the parent template's content.

References

  1. JavaServer(TM) Pages Implementation
  2. "pugjs/pug". GitHub. Retrieved 2021-05-17.
  3. "slim-template/slim". Github. Retrieved 2021-05-17.