Система веб-шаблонов

Система веб-публикации
Основной процесс для серверной системы веб-шаблонов : контент (из базы данных ) и «спецификации представления» (в веб-шаблоне ) объединяются (с помощью механизма шаблонов ) для массового производства веб-документов.

Система веб-шаблонов в веб-публикации позволяет веб-дизайнерам и разработчикам работать с веб-шаблонами для автоматического создания пользовательских веб-страниц , таких как результаты поиска. Это повторно использует статические элементы веб-страницы, определяя динамические элементы на основе параметров веб-запроса . Веб-шаблоны поддерживают статический контент, предоставляя базовую структуру и внешний вид. Разработчики могут реализовывать шаблоны из систем управления контентом , фреймворков веб-приложений и HTML-редакторов .

Обзор

Система веб-шаблонов состоит из следующих элементов:

Шаблон и ресурсы контента обрабатываются и объединяются шаблонизатором для массового производства веб-документов. В целях данной статьи веб-документы включают любой из различных форматов вывода для передачи через Интернет через HTTP , HTTPS или другой интернет-протокол .

Шаблонизатор

Диаграмма, иллюстрирующая все основные элементы и поток обработки шаблонизатора.
Процессор шаблонов (также известный как шаблонизатор или анализатор шаблонов) — это программное обеспечение, предназначенное для объединения шаблонов с данными (определяемыми моделью данных ) для создания результирующих документов или программ . [2] [3] [4] Язык, на котором написаны шаблоны, известен как язык шаблонов или язык шаблонизации. Для целей этой статьи результирующий документ — это любой вид форматированного вывода, включая документы , веб-страницы или исходный код (при генерации исходного кода ), как целиком, так и фрагментами. Шаблонизатор обычно включается как часть системы веб-шаблонов или фреймворка приложения и может также использоваться как препроцессор или фильтр .

Пример

Поскольку модель обычно хранится в реляционной базе данных, оставшимися компонентами архитектуры MVC являются элемент управления и представление. В простейших системах эти два элемента не разделены. Однако, адаптируя принцип разделения интересов, можно полностью разделить отношения.

Например, шаблон представления может выглядеть так:

<!DOCTYPE html> < html  xmlns = "http://www.w3.org/1999/xhtml" >  < head >< title > Сайты </ title ></ head >  < body >< h1  data-xp = "title" > <!-- заполнитель --> </ h1 ></ body > </ html >

Затем шаблон управления загружает представление, а затем использует XPath -адресацию [ оригинальное исследование? ] для вставки компонентов из базы данных, например:

<?php $doc  =  new  DOMDocument ; $doc -> preserveWhiteSpace  =  false ; $doc -> Load ( 'view.html' ); $titlenode  =  $doc -> createTextNode ( "Нравится" ); $xpath  =  new  DOMXPath ( $doc ); $xpath -> registerNamespace ( "h" ,  "http://www.w3.org/1999/xhtml" );  $query  =  "//h:*[@data-xp='title']/comment()" ; $entries  =  $xpath -> query ( $query ); foreach  ( $entries  as  $entry )  {  $entry -> parentNode -> replaceChild ( $titlenode ,  $entry ); } echo  $doc -> saveXML (); ?>

Виды систем шаблонов

Веб-браузер и веб-сервер представляют собой архитектуру клиент-сервер . Сайты часто также используют веб-кэш для повышения производительности. Пять типов систем шаблонов классифицируются на основе того, когда они заменяют заполнители реальным контентом и собирают страницы.

  • На стороне сервера – замена во время выполнения происходит на веб-сервере.
  • На стороне клиента – подстановка во время выполнения происходит в веб-браузере.
  • Edge-side – замена во время выполнения происходит на прокси-сервере между веб-сервером и браузером.
  • Внешний сервер — статические веб-страницы создаются в автономном режиме и загружаются на веб-сервер; замена во время выполнения не производится
  • Распределенная – замена во время выполнения происходит на нескольких серверах.

Языки шаблонов могут быть:

  • Встроенные или событийно-управляемые.
  • Простые, итеративные, программируемые или сложные.
  • Определено консорциумом, определено в частном порядке или де-факто определено открытой реализацией. Право собственности влияет на стабильность и достоверность спецификации. Однако в большинстве юрисдикций спецификация языка не может быть защищена авторским правом, поэтому контроль редко бывает абсолютным.

Исходный код шаблонизатора может быть как проприетарным, так и открытым .

Многие системы шаблонов являются компонентом более крупной платформы или фреймворка программирования. Их называют «системой шаблонов платформы». Некоторые системы шаблонов имеют возможность замены другого языка шаблонов или движка. [ необходима цитата ]

Языковая поддержка

Такие языки программирования, как Perl , Ruby , C и Java, поддерживают обработку шаблонов как изначально, так и через дополнительные библиотеки и модули. JavaServer Pages (JSP), PHP и Active Server Pages (ASP с VBScript , JScript или другими языками) сами по себе являются примерами веб-шаблонизаторов. Эти технологии обычно используются в серверных системах шаблонизации, но могут быть адаптированы для использования на прокси-сервере «edge-side» или для генерации статических страниц.

Генераторы статических сайтов

Генераторы статических сайтов — это движки, которые используют плоские текстовые входные файлы, такие как markdown и asciidoc, для генерации статической веб-страницы . Примерами этого являются Jekyll (Liquid, Ruby ), Hugo ( шаблоны Go ) и Pelican ( Jinja2 , Python ).

Статические HTML-редакторы

Архитектура системы шаблонов внешнего сервера.

HTML-редакторы часто используют системы веб-шаблонов для создания только статических веб-страниц . Их можно рассматривать как готовый веб-дизайн , используемый для массового производства "шаблонных" веб-сайтов для быстрого развертывания. Они также обычно включают темы вместо стилей CSS . В общем, язык шаблонов используется только с программным обеспечением редактора. [5]

FrontPage и Dreamweaver когда-то были самыми популярными редакторами с подсистемами шаблонов. Веб-шаблон Flash использует Macromedia Flash для создания визуально интерактивных сайтов.

Многие серверные системы шаблонов имеют возможность публиковать выходные страницы на сервере, где опубликованные страницы являются статическими . Это распространено в системах управления контентом , таких как Vignette , но не считается генерацией вне сервера. В большинстве случаев эта «опция публикации» не мешает системе шаблонов , и ее можно реализовать с помощью внешнего программного обеспечения, например Wget .

Серверные системы

Система шаблонов на стороне сервера

Люди начали использовать динамические страницы на стороне сервера , сгенерированные из шаблонов с помощью уже существующего программного обеспечения, адаптированного для этой задачи. Это раннее программное обеспечение было препроцессорами и макроязыками , адаптированными для веб-использования, работающими на CGI . Затем, простой, но актуальной технологией стало прямое выполнение, выполненное на модулях расширения, начатое с SSI .

Многие системы шаблонов обычно используются в качестве серверных систем шаблонов :

Метка/имя системыПлатформа/фреймворкПримечания
ЛезвиеPHPПубличный. Часть Laravel
CheetahTemplateПитонПубличный. Встроенный сложный язык .
ДжангоПитонИспользуйте «язык шаблонов Django».
FreeMarkerЯваПубличный.
ФейслетыДжакарта ЭЭОбщественность. Часть Джакарты Лица
ГеншиПитонПубличный
ХамлРубин или другойПубличный.
ГамлетыЯваПубличный.
Джинджа2ПитонПубличный. Встроенный сложный язык .
РебенокПитон
ЛассоЛассоСофт, ОООЗапатентованный. Интерпретируемый язык программирования и сервер
УсыActionScript , C++ , Clojure , CoffeeScript , ColdFusion , D , Erlang , Fantom , Go , Java , серверный JavaScript , Lua , .NET , Objective-C , ooc, [6] Perl , PHP , Python , Ruby , Scala , TclПубличный.
Базовые серверные включения (SSI)Основные директивы устанавливают «стандарт».Встроенный простой язык , если исключена execдиректива.
УмницаPHPПубличный. Встроенный сложный язык .
Набор шаблоновПерлПубличный. Встроенный сложный язык .
Язык атрибутов шаблона (TAL)Zope , Python , Java , Perl , PHP , XSLTПубличные; также известные как Zope Page Templates (ZPT) ; см. также TAL Expression Syntax (TALES), Macro Expansion TAL (METAL)
ПлиткаЯваПубличный. Поддерживает несколько языков шаблонов (JSP, Velocity, Freemarker, Mustache) из различных фреймворков (servlet, portlets, struts, spring).
ТимелистЯваПубличный.
ТопсайтПитонПублично. «По состоянию на 2008-02-20 этот проект больше не находится в стадии активной разработки». [7]
ВеточкаPHP
PHPlibPHPlibПубличный. Встроенный итеративный язык .
Веб-МакросЯваПубличный. Встроенный итеративный язык .
Веб-объектыЯваИспользуйте WebObjects Builder в качестве движка.
СкоростьЯваПубличный. Используйте VTL - язык шаблонов Velocity.
ВиньеткаЗапатентовано.Коммерческое решение. Встроенный сложный язык .
XSLT (стандартный язык)Любой с XSLT-парсеромСтандартный. Событийно-управляемый программируемый язык .
XQuery (стандартный язык)Любой с парсером XQueryСтандарт. Встроенный программируемый язык .

Технически, методология встраивания языков программирования в HTML (или XML и т. д.), используемая во многих "серверных включаемых скриптовых языках", также является шаблонами. Все они являются Embedded complex languages .

Метка/имя системыПримечания
Активные серверные страницы (ASP)Проприетарный ( платформа Microsoft ). См. также: VBScript , Javascript, PerlScript и т. д. расширения для ASP.
eRubyПубличный ( Рубин ).
Язык разметки ColdFusion (CFM)Публичные ( Lucee , Railo , OpenBD). Проприетарные ( Adobe ColdFusion ).
Страницы сервера Джакарта (JSP)Общественность, Джакарта EE .
Активный ПерлПубличный.
PHPПубличный.
OpenACSПубличный ( Tcl ).

Существуют также препроцессоры, используемые в качестве серверных шаблонизаторов . Примеры:

ПрепроцессорПримечания
препроцессор CПубличный. Встроенный итеративный язык .
М4Публичный. Встроенный сложный язык .

Системы Edge-side

Системы шаблонов и включений Edge-Side. «Edge-side» относится к веб-серверам, которые находятся в пространстве между клиентом (браузером) и исходным сервером. Их часто называют серверами «обратного прокси». Эти серверы обычно выполняют задачу по снижению нагрузки и трафика на исходных серверах путем кэширования контента, такого как изображения и фрагменты страниц, и доставки его в браузер эффективным способом.

Basic Edge Side includes (ESI) — это язык, подобный SSI. ESI был реализован для сетей доставки контента. Язык шаблонов ESI также может быть реализован в веб-браузерах с использованием JavaScript и Ajax или через «плагин» браузера.

Клиентские системы

Клиентская и распределенная (децентрализованная) система шаблонов.

Многие веб-браузеры могут применять таблицу стилей XSLT к данным XML, которая преобразует данные в документ XHTML, тем самым предоставляя функциональность шаблона в самом браузере.
Другие системы реализуют функциональность шаблона в браузере с помощью JavaScript или другого клиентского языка сценариев, включая:

Распределенные системы

Самая простая форма — это трансклюзии (HTML-фреймы). В других случаях необходимы динамические веб-страницы .

Примеры:

Смотрите также

Концепции:     Стандарты:
  • UIML (язык разметки пользовательского интерфейса)
  • XSLT (преобразования расширяемого языка таблиц стилей)
     Программное обеспечение:

Ссылки

  1. ^ "Template engine". phpwact.org wiki. Архивировано из оригинала 4 декабря 2012 г. Получено 7 января 2013 г.
  2. ^ Нимейер, Патрик (2002). Изучение Java . Севастополь: O'Reilly. ISBN 0-596-00285-8.
  3. ^ Манолеску, Драгос (2006). Шаблонные языки проектирования программ 5. Чтение: Addison-Wesley Professional. ISBN 0-321-32194-4.
  4. ^ Фаулер, Мартин (2003). Модели архитектуры корпоративных приложений . Бостон: Addison-Wesley. ISBN 0-321-12742-0.
  5. ^ Макдональд, Мэтью (2015). Создание веб-сайта: недостающее руководство. Глава 8 > Размещение одного и того же контента на нескольких страницах > Веб-шаблоны > Примечание: O'Reilly Media, Inc. ISBN 9781491936177. Получено 19 января 2016 г.{{cite book}}: CS1 maint: location (link)
  6. ^ "{{mustache}}" . Получено 15 октября 2013 г. .
  7. ^ jodyburns. "Система шаблонов Topsite" . Получено 15 октября 2013 г.

9. Бесплатные темы для сайтов электронной коммерции MG Technologies Блоги и информационный портал тем для сайтов.

  • Сравнение библиотек шаблонов JavaScript 2009 года
  • Обеспечение строгого разделения модели и представления в шаблонизаторах
  • Двойной модельный подход для достижения эффективного разделения модели и представления в веб-приложениях на основе шаблонов
  • Сравнение шаблонизатора PHP с графическими диаграммами
  • Сравнения/тесты некоторых шаблонизаторов Python и некоторые общие мысли о шаблонизаторах
  • web-mode.el — это основной редактор emacs для редактирования веб-шаблонов
Retrieved from "https://en.wikipedia.org/w/index.php?title=Web_template_system&oldid=1230540475"