Comparison of web template engines
Appearance
From Wikipedia, the free encyclopedia
This article contains dynamic lists that may never be able to satisfy particular standards for completeness. You can help by editing the page to add missing items, with references to reliable sources.
This article needs additional citations for verification . Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Comparison of web template engines" – news · newspapers · books · scholar · JSTOR (September 2018) (Learn how and when to remove this message)
Find sources: "Comparison of web template engines" – news · newspapers · books · scholar · JSTOR (September 2018) (Learn how and when to remove this message)
The following table lists the various web template engines used in Web template systems and a brief rundown of their features.
| 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 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No |
| ASP.NET (Microsoft) | C#, VB.NET | Proprietary | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | ? | ? |
| ASP.NET (Mono) | C# | LGPL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | ? | ? |
| Laravel Blade | PHP | MIT | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |
| CheetahTemplate | Python | MIT | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes |
| CodeCharge Studio | Classic ASP, C#, VB.NET, PHP, Perl, Java/JSP, ColdFusion | Proprietary | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | ? |
| ColdFusion | CFML, CFScript | Proprietary | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| CTPP | C, C++, Perl, PHP, Python | BSD-like | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | Yes | No |
| Django | Python | BSD-like | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes |
| Epsilon Generation Language[1] | Java | Eclipse Public License | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No |
| EJS | JavaScript | Various | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| eRuby | Ruby | GNU GPL / Ruby License | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
| FreeMarker | Java | Apache | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No |
| Genshi | Python | BSD-like | Yes | Yes | Yes | Yes | Yes | Yes (Python) | Yes | Yes | Yes | Yes | No |
| Go templates | Go | BSD | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
| Haml | Ruby, PHP (WIP) | MIT | Yes | Yes | Yes | Yes | Yes | Yes (Ruby) | Yes | Yes | Yes | No | No |
| Hamlets | Java | BSD | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | ? | ? | ? |
| JavaServer Pages | Java | CDDL + GNU GPL [2] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | ? |
| Jinja | Python | BSD | Yes | Yes | Yes | Yes | Yes | Yes (Python) | Yes | No | Yes | No | Yes |
| Jinja2 | Python | BSD | Yes | Yes | Yes | Yes | Yes | Yes (Python) | Yes | Yes | Yes | No | Yes |
| Tera[3] | Rust | MIT | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | No | No | No |
| Kid | Python | MIT | Yes | Yes | Yes | Yes | Yes | Yes (Python) | Yes | Yes | No | Yes | No |
| Lucee | CFML | LGPL | Yes | Yes | Yes | Yes | Yes | Yes (CFML) | Yes | Yes | Yes | Yes | Yes |
| Mako | Python | MIT | Yes | Yes | Yes | Yes | Yes | Yes (Python) | Yes | Yes | Yes | No | Yes |
| Mustache | 30+ languages | MIT | Yes | Yes | Yes | Yes | Yes (foreach) |
No | No | Yes | Yes | Yes | No |
| Open Power Template | PHP 5 | BSD-like | Yes | Yes | Yes | Yes | Yes | Yes (PHP) | Yes | Yes | No | Yes | Yes |
| PHP | PHP | PHP License | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
| Pug[4] | JavaScript | MIT [5] | Yes | Yes | Yes | Yes | Yes | Yes (JavaScript) | Yes | Yes | No | No | Yes |
| Razor | C#, F#, VB.NET | Apache | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Smarty | PHP | LGPL | Yes | Yes | Yes | Yes | Yes | Yes (PHP) | Yes | Yes? | Yes | No | Yes |
| Slim[6] | Ruby | MIT [7] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes |
| Template Attribute Language | Various | open source | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | ? |
| Template Toolkit | Perl, Python | Perl | Yes | Yes | Yes | Yes | Yes | Yes (Perl) | Yes | Yes | No | No | Yes |
| Thymeleaf | Java | Apache | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No |
| Twig | PHP | BSD | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | Yes |
| web2py | Python | LGPL3 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| WebMacro | Java | Apache, GNU GPL | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | ? | ? |
| 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
[edit ]- Template processor
- Web template system
- JavaScript templating
- Category:Template engines
- Java template engine performance report in spring boot
Notes
[edit ]- ^ a b Engine (implementation) : engine name
- ^ a b Languages : implementation language of the engine (not the template script language)
- ^ a b License : Software license agreement
- ^ a b Variables : script language power to use variables
- ^ a b Functions : script language power to use functions
- ^ a b Includes : script language power include external files
- ^ a b Conditional inclusion : script language power to conditional includes
- ^ a b Looping : script language power to do loops (for, while) or recursion
- ^ a b Evaluation (language) : script language power to do "eval command" (to the implementation language)
- ^ a b Assignment : set names and references to sub-templates (?)
- ^ a b Errors and exceptions : engine output script errors.
- ^ a b i18n : Internationalization and localization feature
- ^ a b Natural templates : the template can be a document as valid as the final result, the engine syntax doesn't break the document's structure
- ^ a b Inheritance : Supports the ability to inherit a layout from a parent template, separately overriding arbitrary sections of the parent template's content.
References
[edit ]- ^ "Code Generation (EGL) - Epsilon". eclipse.dev. Retrieved 2025年11月07日.
- ^ JavaServer(TM) Pages Implementation
- ^ "Tera". keats.github.io. Retrieved 2025年11月07日.
- ^ "Getting Started". pugjs.org. Retrieved 2025年11月07日.
- ^ "pugjs/pug". GitHub. Retrieved 2021年05月17日.
- ^ "Slim - A Fast, Lightweight Template Engine for Ruby". slim-template.github.io. Retrieved 2025年11月07日.
- ^ "slim-template/slim". Github. Retrieved 2021年05月17日.