Домой Edit me on GitHub

2019-03-15

Каналы передачи данных | Сетевое программирование | Базы данных | Основы Веб-программирования

Шаблоны

Шаблонизатор (в web) — это программное обеспечение, позволяющее использовать html-шаблоны для генерации конечных html-страниц.

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

Использование шаблонизаторов улучшает читаемость кода и упрощает внесение изменений во внешний вид, когда проект целиком выполняет один человек.

Свою популярность шаблоны обрели с приходом фреймворка Ruby On Rails и стали популярны не только в Вебе, современные десктопные приложения тоже идут по пути отделения логики программы от интерфейса, например библиотека Electron позволяет создавать GUI приложения с интерфейсом, написанном на HTML + JavaScript и логикой на NodeJS, по сути встраивая движок Chromium в ваш исполняемый файл.

Другим примером является фреймворк Qt, в котором интерфейс может быть написан на Qml + JavaScript и запускаться независимо от основного приложения при помощи утилиты qmlscene. Компания Microsoft также продвигает эту идею в .Net, предоставляя технологию WPF. Как мы видим, некоторые принципы, ранее встречающиеся преимущественно в Вебе, перенимаются другими областями программирования. Тем самым с развитием Интернет Веб-технологии будут все больше влиять на программирование в целом.

../../../_images/template.svg

Шаблоны имеют очень простое определение — в статические файлы вставляются куски кода, а при прогоне таких файлов через специальный транслятор (препроцессор), код заменяется результатом его выполнения. Например, при компиляции шаблоны в C++ заменяются определенными значениями:

template< typename T >
T min( T a, T b )
{
  return a < b ? a : b;
}

Перед компиляцией этот шаблон может принять такой вид:

int min( int a, int b )
{
  return a < b ? a : b;
}

long min( long a, long b )
{
  return a < b ? a : b;
}

Если Ruby развивался как полноценный, интерпретируемый язык общего назначения, который потом обрел фреймворк Ruby On Rails и наконец систему шаблонов, то PHP изначально был языком шаблонов, т.е. препроцессором, через который можно прогнать любой файл (например, HTML со вставками PHP) и получить результат.

Простой пример на PHP:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<html>
  <head>
     <title>
        Тестируем PHP
     </title>
  </head>
  <body>

  <?php
    echo '<h1>Hello, world!</h1>';
  ?>

  <br />

  <?php
    $colors = array("red", "green", "blue", "yellow");

    foreach ($colors as $value) {
        echo "* $value <br />\n";
    }
  ?>

  </body>
</html>

Результат выполнения программы:

php index.php
<html>
  <head>
     <title>
        Тестируем PHP
     </title>
  </head>
  <body>

  <h1>Hello, world!</h1>
  <br />

  * red <br />
* green <br />
* blue <br />
* yellow <br />

  </body>
</html>
Previous: Маршруты Next: Jinja2