Движок Pug¶
Pug представляет еще один движок представлений, который мы можем использовать в связке с Express.
Для использования Pug вначале добавим необходимые пакеты с помощью следующей команды:
1 |
|
Определим в файле app.js
следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
Факически здесь код идентичен тому, что использовался для ранее рассмотренных движков за тем исключением, что в качестве движка представления устанавливается Pug:
1 |
|
Затем добавим в папку views
в папке проекта новый файл contact.pug
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Для работы с переданными данными внутри html-элементов применяются теги #{выражение}
:
1 |
|
Для определения условных и циклов можно просто размещать их на новой строке:
1 2 3 4 5 6 7 8 |
|
С помощью отступов определяется, какой код вход в цикл или условную конструкцию. Причем цикл представляет выражение each
переменная in
массив - при переборе массива в переменную будет помещаться текущий перебираемый объект. Так, в примере выше при переборе массива emails
каждый перебираемый объект будет помещаться в переменную email
, значение которой затем выводится на страницу.
При обращении по адресу /contact
приложение сгенерирует веб-страницу:
Причем Pug позволяет сократить определения html-разметки. Так выше приведенный пример мы можем переписать как
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
То есть нам достаточно поместить на строке название html-элемента и затем можно определять его содержимое. Содержание элементов определяется отступами. Причем в примере выше подобным образом могут быть сокращены элементы body
, head
, html
. То есть факически всю веб-страницу мы можем определить в подобном стиле.
Если html-элемент в качестве содержимого принимает только значение из модели, то можно сократить код так: li=email
Кроме цикла each..in
также можно использовать цикл while
:
1 2 3 4 |
|
Также можно перебирать сложные объекты:
1 2 3 |
|