Web template system: Difference between revisions

Content deleted Content added
Static HTML Editors: remove unneeded table
Overview: clarification: similar visual format
 
(29 intermediate revisions by 21 users not shown)
Line 8:
[[File:TempEngWeb016.svg|thumb|The basic process for a server-side '''web templating system''': content (from a [[database]]), and "presentation specifications" (in a '''web template'''), are combined (through the [[template processor|template engine]]) to mass-produce web documents.]]
 
A '''web template system''' in [[web publishing]] letsallows web designers and developers to work with ''web templates'' to automatically generate custom [[web page]]s, such as the results from a search. This reuses static web page elements while defining dynamic elements based on [[HTTP request|web request]] parameters.
Web templates support static content, providing basic structure and appearance. Developers can implement templates from [[content management system]]s, [[web application framework]]s, and [[HTML editor]]s.
 
Line 17:
* ''[[Template resource]]'': ''web template''s specified according to a [[template language]];
 
The template and content resources are processed and combined by the template engine to mass-produce web documents, each with a similar visual format. For purposes of this article, web documents include any of various output formats for transmission over the web via [[Hypertext Transfer Protocol|HTTP]], [[HTTPS]], or another [[Internet Protocol|Internet protocol]].
 
===Template engine===
{{Excerpt|Template processor}}
 
== Example ==
With the model typically held in a relational database, the remaining components of the [[model–view–controller|MVC]] architecture are the control and view. In the simplest of systems these two are not separated. However, adapting the [[separation of concerns]] principle one can completely decouple the relationships.
 
For example, the view template may look like this:
<syntaxhighlight lang="html5html">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
Line 53 ⟶ 56:
A web browser and web server are a [[client–server]] architecture. Sites often also use a [[web cache]] to improve performance. Five templating system types are classified based on when they replace placeholders with real content and assemble pages.
 
* Server-side - run-time substitution happens on the web server
* Client-side - run-time substitution happens in the web browser
* Edge-side - run-time substitution happens on a proxy between web server and browser
* Outside server - static web pages are produced offline and uploaded to the web server; no run-time substitution
* Distributed - run-time substitution happens on multiple servers
 
Template languages may be:
Line 66 ⟶ 69:
The source code of the [[Template engine (web)|template engine]] can be proprietary or [[open source]].
 
Many template systems are a component of a larger programming platform or framework. They are referred to as the "platform's template system". Some template systems have the option of substituting a different template language or engine.{{citation needed|date=August 2013}}
 
===Language support===
[[Programming languages]] such as [[Perl]], [[Ruby (programming language)|Ruby]], [[C (programming language)|C]], and [[Java (programming language)|Java]] support template processing either natively, or through add-on libraries and modules. [[JavaServer Pages]] (JSP), [[PHP]], and [[Active Server Pages]] (ASP with [[VBScript]], [[JScript]] or other languages) are examples, themselves, of web template engines. These technologies are typically used in server-side templating systems, but could be adapted for use on aan "edge-side" proxy or for static page generation.
 
===Static site generators===
{{Main|Static site generator}}
Static site generators are engines that use flat text input files like [[markdown]] and [[asciidoc]] to generate a [[static web page]]. Examples of this include [[Jekyll (software)|Jekyll]] (onLiquid, [[GitHubRuby (programming language)|Ruby]]), [[Hugo (software)|Hugo]] (on [[GitLabGo (programming language)|Go]] templates), and Pelican ([[Jinja (template engine)|Jinja2]], [[Python (software)|Python]]).
 
===Static HTML Editors===
[[File:StaticTemplates.gif|thumb|right|Outside server template system architecture.]]
 
[[HTML editor]]s often use web template systems to produce only [[static web page]]s. These can be viewed as a ready-made [[web design]], used to mass-produce "cookie-cutter" [[website]]s for rapid deployment. They also commonly include themes in place of [[Cascading Style Sheets|CSS]] styles. In general, the template language is used only with the editor's software.<ref>{{cite book|last1=MacDonald|first1=Matthew|title=Creating a Website: The Missing Manual|date=2015|publisher=O'Reilly Media, Inc.|___location=Chapter 8 > Putting the Same Content on Multiple Pages > Web Templates > Note box|isbn=9781491936177|url=https://books.google.com/books?id=ZJTuCQAAQBAJ|access-date=19 January 2016}}</ref>
 
[[Microsoft FrontPage|FrontPage]] and [[Macromedia Dreamweaver|Dreamweaver]] were once the most popular editors with template sub-systems. A Flash web template uses [[Adobe Animate|Macromedia Flash]] to create visually interactive sites.
 
Many ''server-side template systems'' have an option to publish output pages on the server, where the published pages are [[static web page|static]]. This is common on [[content management system]]s, like [[Vignette (software)|Vignette]], but is not considered out-server generation. In the majority of cases, this "publish option" doesn't interfere with the ''template system'', and it can be made by external software, as [[Wget]].
Line 104 ⟶ 108:
| [[Python (programming language)|Python]]
| Use the "Django template language".
|-
| EJS (Embedded JavaScript)
| [[JavaScript]]
| Public. [[Web template#Template languages|Embedded complex language]].
|-
| [[FreeMarker]]
Line 111 ⟶ 119:
| [[Facelets]]
| [[Jakarta EE]]
| Public. Part of [[Jakarta Server Faces]]
|-
| [[Genshi (Templating Language)|Genshi]]
Line 167 ⟶ 175:
| Topsite
| [[Python (programming language)|Python]]
| Public. ''"As of 2008-02-20, this project is no longer under active development."''<ref>{{cite web|last=jodyburns|title=Topsite Templating System|url=httphttps://sourceforge.net/projects/topsite/|access-date=15 October 2013}}</ref>
|-
| [[Twig (template engine)|Twig]]
Line 214 ⟶ 222:
|-
| [[ColdFusion Markup Language]] (CFM)
| Public ([[Lucee]], [[Railo]], [[OpenBD]]). Proprietary ([[Adobe ColdFusion]]).
|-
| [[Jakarta Server Pages]] (JSP)
Line 248 ⟶ 256:
===Client-side systems===
[[File:ClientSideTemplates.gif|thumb|right|Client-side and [[Distributed computing|distributed]] (decentralized) template system.]]
{{see also|JavaScript templating}}
Many web browsers can apply an [[XSLT]] stylesheet to XML data that transforms the data into an XHTML document, thereby providing template functionality in the browser itself.<br />
Other systems implement template functionality in the browser using [[JavaScript]] or another [[client-side scripting]] language, including: