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) [lower-alpha 1] Languages [lower-alpha 2] License [lower-alpha 3] Variables [lower-alpha 4] Functions [lower-alpha 5] Includes [lower-alpha 6] Conditional inclusion [lower-alpha 7] Looping [lower-alpha 8] Evaluation (language) [lower-alpha 9] Assignment [lower-alpha 10] Errors and exceptions [lower-alpha 11] i18n [lower-alpha 12] Natural templates [lower-alpha 13] Inheritance [lower-alpha 14]
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
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) [lower-alpha 1] Languages [lower-alpha 2] License [lower-alpha 3] Variables [lower-alpha 4] Functions [lower-alpha 5] Includes [lower-alpha 6] Conditional inclusion [lower-alpha 7] Looping [lower-alpha 8] Evaluation (language) [lower-alpha 9] Assignment [lower-alpha 10] Errors and exceptions [lower-alpha 11] i18n [lower-alpha 12] Natural templates [lower-alpha 13] Inheritance [lower-alpha 14]

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.

Related Research Articles

<span class="mw-page-title-main">JavaScript</span> High-level programming language

JavaScript, often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2023, 98.7% of websites use JavaScript on the client side for webpage behavior, often incorporating third-party libraries. All major web browsers have a dedicated JavaScript engine to execute the code on users' devices.

<span class="mw-page-title-main">PHP</span> Scripting language created in 1994

PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. PHP was originally an abbreviation of Personal Home Page, but it now stands for the recursive initialism PHP: Hypertext Preprocessor.

VBScript is a deprecated Active Scripting language developed by Microsoft that is modeled on Visual Basic. It allows Microsoft Windows system administrators to generate powerful tools for managing computers without error handling and with subroutines and other advanced programming constructs. It can give the user complete control over many aspects of their computing environment.

XSLT is a language originally designed for transforming XML documents into other XML documents, or other formats such as HTML for web pages, plain text or XSL Formatting Objects, which may subsequently be converted to other formats, such as PDF, PostScript and PNG. Support for JSON and plain-text transformation was added in later updates to the XSLT 1.0 specification.

In computer programming, the scope of a name binding is the part of a program where the name binding is valid; that is, where the name can be used to refer to the entity. In other parts of the program, the name may refer to a different entity, or to nothing at all. Scope helps prevent name collisions by allowing the same name to refer to different objects – as long as the names have separate scopes. The scope of a name binding is also known as the visibility of an entity, particularly in older or more technical literature—this is in relation to the referenced entity, not the referencing name.

JScript is Microsoft's legacy dialect of the ECMAScript standard that is used in Microsoft's Internet Explorer web browser.

JScript .NET is a .NET programming language developed by Microsoft.

ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the Java virtual machine (JVM), the .NET framework, and Google App Engine. Several commercial and free and open-source software implementations of CFML engines are available, including Adobe ColdFusion, Lucee, New Atlanta BlueDragon, Railo, Open BlueDragon, and other CFML server engines.

<span class="mw-page-title-main">JavaScript syntax</span> Set of rules defining correctly structured programs

The syntax of JavaScript is the set of rules that define a correctly structured JavaScript program.

Haxe is a high-level cross-platform programming language and compiler that can produce applications and source code for many different computing platforms from one code-base. It is free and open-source software, released under the MIT License. The compiler, written in OCaml, is released under the GNU General Public License (GPL) version 2.

<span class="mw-page-title-main">Web template system</span> System in web publishing

A web template system in web publishing allows web designers and developers work with web templates to automatically generate custom web pages, such as the results from a search. This reuses static web page elements while defining dynamic elements based on web request parameters. Web templates support static content, providing basic structure and appearance. Developers can implement templates from content management systems, web application frameworks, and HTML editors.

<span class="mw-page-title-main">Aptana</span> Text editor

Aptana, Inc. is a company that makes web application development tools for use with a variety of programming languages. Aptana's main products include Aptana Studio, Aptana Cloud and Aptana Jaxer.

<span class="mw-page-title-main">Template processor</span> Software designed to combine templates with a data model to produce result documents

A template processor is software designed to combine templates with a data model to produce result documents. The language that the templates are written in is known as a template language or templating language. For purposes of this article, a result document is any kind of formatted output, including documents, web pages, or source code, either in whole or in fragments. A template engine is ordinarily included as a part of a web template system or application framework, and may be used also as a preprocessor or filter.

The syntax and semantics of PHP, a programming language, form a set of rules that define how a PHP program can be written and interpreted.

Web2py is an open-source web application framework written in the Python programming language. Web2py allows web developers to program dynamic web content using Python. Web2py is designed to help reduce tedious web development tasks, such as developing web forms from scratch, although a web developer may build a form from scratch if required.

<span class="mw-page-title-main">Rexx</span> Command/scripting/programming language

Rexx is a programming language that can be interpreted or compiled. It was developed at IBM by Mike Cowlishaw. It is a structured, high-level programming language designed for ease of learning and reading. Proprietary and open source Rexx interpreters exist for a wide range of computing platforms; compilers exist for IBM mainframe computers.

CoffeeScript is a programming language that compiles to JavaScript. It adds syntactic sugar inspired by Ruby, Python, and Haskell in an effort to enhance JavaScript's brevity and readability. Specific additional features include list comprehension and destructuring assignment.

Mustache is a web template system with implementations available for ActionScript, C++, Clojure, CoffeeScript, ColdFusion, Common Lisp, Crystal, D, Dart, Delphi, Elixir, Erlang, Fantom, Go, Haskell, Io, Java, JavaScript, Julia, Lua, .NET, Objective-C, OCaml, Perl, PHP, Pharo, Python, R, Racket, Raku, Ruby, Rust, Scala, Smalltalk, Swift, Tcl, CFEngine, and XQuery.

Hack is a programming language for the HipHop Virtual Machine (HHVM), created by Meta as a dialect of PHP. The language implementation is open-source, licensed under the MIT License.

<span class="mw-page-title-main">Nim (programming language)</span> Programming language

Nim is a general-purpose, multi-paradigm, statically typed, compiled high-level systems programming language, designed and developed by a team around Andreas Rumpf. Nim is designed to be "efficient, expressive, and elegant", supporting metaprogramming, functional, message passing, procedural, and object-oriented programming styles by providing several features such as compile time code generation, algebraic data types, a foreign function interface (FFI) with C, C++, Objective-C, and JavaScript, and supporting compiling to those same languages as intermediate representations.

References

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