Что такое нефрит в коде?

Jade — это шаблонизатор для Node.js, который компилируется в HTML. Он предоставляет простой синтаксис для написания шаблонов HTML, что позволяет использовать динамический контент без необходимости открывать и закрывать множество тегов. Jade уже много лет популярен в сообществе Node.js и недавно был переименован в «Pug» из-за проблем с товарными знаками.

В этой статье мы рассмотрим, что такое Jade, как его установить и настроить, его синтаксис и функции, а также примеры того, как его использовать в приложении Node.js. Мы также рассмотрим некоторые преимущества и недостатки использования Jade по сравнению с обычным HTML.

Что такое Jade?

Jade — это шаблонизатор с открытым исходным кодом, который компилируется в HTML. Он был создан в 2010 году TJ Holowaychuk, одним из создателей Express, чтобы избежать необходимости писать повторяющийся HTML в своих приложениях Node.js.

Ключевые преимущества Jade включают в себя:

  • Более простой и лаконичный синтаксис, чем HTML
  • Поддержка динамического контента с помощью JavaScript
  • Возможность повторного использования с помощью миксинов, включений и расширений
  • Лучшая читаемость без всех закрывающих тегов

Вместо того, чтобы писать полные теги HTML, Jade предоставляет сокращения для часто используемых элементов. Например, тег абзаца можно написать просто как p вместо

. Jade удаляет большую часть многословия HTML для создания более чистых шаблонов.

Шаблоны Jade компилируются в обычный HTML, поэтому их может использовать любой фреймворк frontend или CMS. Скомпилированный HTML является статическим, а интерполяция строк обрабатывается во время компиляции.

В целом, Jade стремится сделать написание шаблонов HTML более быстрым, простым и удобным для поддержки за счет удаления большого количества повторяющегося кода. Это популярный выбор для приложений Node.js, но его можно использовать в любой среде, поддерживающей JavaScript.

Установка Jade

Чтобы использовать Jade, сначала нужно установить его как зависимость в вашем проекте Node.js. Jade можно установить из npm:

“`
npm install jade
“`

Это установит последнюю версию Jade в папку node_modules. Затем мы можем require() в нашем коде JavaScript:

“`js
var jade = require('jade');
“`

Jade предоставляет как API Node.js для компиляции шаблонов, так и интерфейс командной строки. CLI позволяет компилировать шаблоны Jade из командной строки:

“`
jade template.jade
“`

Это выведет скомпилированный HTML на stdout. CLI также позволяет компилировать каталог или файл в выходной каталог.

Для рендеринга шаблонов Jade в браузере можно использовать клиентский компилятор, такой как jadeify. Он браузеризирует Jade, чтобы шаблоны можно было компилировать в браузере.

Также существуют реализации Jade для PHP, Python, Ruby и Java, поэтому его можно использовать для шаблонизации на бэкэнде во многих средах.

Синтаксис Jade

Синтаксис Jade стремится быть более чистым и лаконичным, чем обычный HTML. Вот некоторые из основных элементов синтаксиса Jade:

### Простой текст

Обычный текст в шаблонах Jade пишется как есть:

“`
p Это абзац текста
“`

Пробелы сохраняются по умолчанию, поэтому в скомпилированном HTML сохраняются новые строки и отступы.

### Теги HTML

Теги HTML в Jade не требуют угловых скобок. Они просто записываются как имя тега:

“`
div
p Этот абзац находится внутри div
“`

Самозакрывающиеся теги, такие как img и input, просто имеют / после имени:

“`
img(src="image.png"/)
“`

Чтобы задать атрибуты, синтаксис следующий (attrName=attrValue):

“`
a(href="index.html") Ссылка
“`

Булевы атрибуты можно просто записать как имя атрибута:

“`
input(type="checkbox", selected)
“`

### Комментарии

Однострочные комментарии начинаются с //:

“`
// Это комментарий
p Здравствуйте
“`

Многострочные комментарии заключаются в /* */:

“`
/*
Это
многострочный комментарий
*/
“`

### Переменные и интерполяция

Jade поддерживает переменные и интерполяцию строк с помощью #{ }:

“`
– var name = “John”
p Здравствуйте #{name}
“`

Выражения JavaScript также могут быть встроены:

“`
p Сегодня #{new Date().toDateString()}
“`

### Условные операторы

if, else if, else и unless доступны управляющие структуры:

“`
if user.authenticated
p Вы вошли в систему
else
p Пожалуйста, войдите в систему
“`

### Итерация

Jade поддерживает итерацию с использованием циклов for и while:

“`
ul
for user in users
li= user.name
“`

while:

“`
– var n = 0
ul
while n Использование Jade в Node.js

Вот простой пример использования Jade в приложении Node.js с Express:

Сначала нам нужно установить Jade и Express:

“`
npm install jade express
“`

Затем в нашем файле app.js мы настраиваем Jade как движок представления для Express:

“`js
var express = require('express');
var jade = require('jade');

var app = express();

// Устанавливаем Jade в качестве движка представления
app.set('view engine', 'jade');

app.get('/', function(req, res) {
res.render('index');
});

app.listen(3000);
“`

Файл шаблона index.jade будет выглядеть так:

“`
html
head
title Мое приложение
body
h1 Привет от Jade!
p Это простой пример использования Jade
“`

При попадании на маршрут / Express отобразит файл index.jade. Скомпилированный HTML будет отправлен в ответе.

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

Вы также можете передавать переменные из обработчиков маршрутов в шаблон:

“`js
app.get('/', function(req, res) {
res.render('index', {name: 'John'});
});
“`

“`
p Hello #{name}
“`

И включите другие файлы Jade:

“`
include header.jade
“`

Это простой пример, но он демонстрирует, как Jade можно интегрировать и использовать для создания шаблонов в приложении Node.js.

Преимущества Jade

Вот некоторые из основных преимуществ использования Jade по сравнению с обычным HTML:

– Более лаконичный синтаксис без необходимости закрывать теги
– Возможности динамических шаблонов
– Возможность повторного использования через extends, includes, mixins
– Условные операторы, циклы и другие структуры управления
– Читабельно с сохранением пробелов
– Может вставлять JavaScript
– Компилируется в HTML, поэтому работает где угодно
– Проверено и испытано в Node.js
– Активная разработка и сообщество

Для веб-разработки с Node.js Jade предоставляет более чистый способ определения шаблонов по сравнению с созданием строк HTML или написанием статических HTML-файлов вручную.

Краткий синтаксис делает шаблоны Jade простыми для чтения и визуального восприятия. Вложенность обрабатывается с помощью пробелов, а не закрывающих тегов. Компилятор обрабатывает преобразование Jade в стандартный HTML.

Jade также предоставляет вам все возможности JavaScript в шаблонах. Это позволяет динамически генерировать контент.

В целом, Jade устраняет большую часть многословия, связанного с HTML, делая веб-шаблоны более лаконичными и выразительными.

Недостатки Jade

Существуют также некоторые недостатки использования Jade по сравнению с обычным HTML:

– Новый синтаксис для изучения
– Зависимость от пробелов и отступов
– Ограниченные сообщения об ошибках в шаблонах
– Не такой распространенный, как HTML
– Предварительный просмотр в браузере требует компиляции
– Конечный вывод по-прежнему HTML
– Логика в шаблонах спорна

Синтаксис Jade проще, чем HTML, но его все равно нужно изучить, особенно если вы привыкли писать сырой HTML и CSS. Зависимость от правильных пробелов и отступов может вызвать проблемы у тех, кто привык к более снисходительному HTML.

Отладка шаблонов Jade может быть сложнее, чем отладка HTML. Ошибки шаблонов часто не очень информативны.

Хотя Jade уже давно популярен в Node.js, он не так распространен, как HTML. Большинство разработчиков интерфейсов знают HTML, поэтому при первом использовании Jade может возникнуть необходимость в обучении.

Предварительный просмотр шаблонов Jade в браузере требует компиляции в HTML, поскольку браузеры понимают только HTML. Это может замедлить редактирование в реальном времени по сравнению с прямым редактированием HTML.

Конечным результатом шаблона Jade по-прежнему является HTML. Некоторые рассматривают Jade просто как препроцессор для HTML и предпочитают работать напрямую с HTML.

Также существуют разные мнения о логике и потоке управления в шаблонах. Некоторые утверждают, что шаблоны Jade становится сложнее поддерживать с большим количеством JavaScript.

По этим причинам Jade может не подходить для каждого варианта использования по сравнению с HTML. Преимущества краткости и выразительности должны быть сопоставлены с недостатками.

Заключение

Jade — это зрелый, популярный шаблонизатор для Node.js, который компилируется в HTML. Он предоставляет краткий, выразительный синтаксис для написания HTML-шаблонов, который избегает многословия с помощью сокращений, таких как пропуск тегов и чувствительность к пробелам.

Ключевые функции, такие как расширения, включения и миксины, помогают поощрять повторное использование шаблонов и сокращать дублирование. Синтаксис также обеспечивает возможности динамического шаблонизации с помощью вкрапленного JavaScript.

Хотя изучение сокращенного синтаксиса может занять некоторое время, Jade устраняет большую часть повторяемости кодирования HTML-шаблонов вручную. Многие считают, что с читаемым, вложенным форматом легче работать, как только они привыкают к сокращенному синтаксису.

Бывают моменты, когда кодирование HTML напрямую имеет больше смысла. Для более крупных и сложных веб-приложений Jade является полезным инструментом для упрощения создания шаблонов и поддержания чистых абстракций между представлениями и логикой. HTML-вывод обеспечивает совместимость с любым фреймворком.

В целом Jade — это зрелый, проверенный в боях шаблонизатор, который предоставляет жизнеспособную альтернативу ручному кодированию HTML-шаблонов. Лаконичность и выразительность Jade сделали его популярным выбором для разработчиков Node.js, которые ищут более чистый и удобный в обслуживании подход к генерации HTML.

Преимущества Недостатки
– Более лаконичный синтаксис без закрывающих тегов – Новый синтаксис для изучения
– Возможности динамических шаблонов – Зависимость от пробелов
– Возможность повторного использования через extends, includes, mixins – Ограниченные сообщения об ошибках
– Условные операторы, циклы, управляющие структуры – Не такой распространенный, как HTML
– Читабельно, с сохранением пробелов – Для предпросмотра в браузере требуется компиляция
– Компилируется в HTML, поэтому работает где угодно – Конечный вывод по-прежнему HTML
– Зрелый и проверенный в боях в Node.js – Логика в шаблонах спорная