Go: введение в JetСегодня я хотел бы рассказать о шаблонизаторе CloudyKit Jet, разработанным для использования в языке Go. При разработке к дизайну Jet были предъявлены следующие требования: использование шаблонизатора должно быть максимально простым, но при этом он должен обеспечивать высокую производительность. Чего и удалось допиться разработчикам. ![]() В результате Jet имеет:
Для начала работы с Jet нужно его установить, что сделать достаточно просто
После чего импортируем библиотеку в проект
Для начала создадим объект jet.Set, в который будут загружены все шаблоны из директории views
Можно загрузить шаблоны более чем из одной директории
также можно просто создать объект, не загружая шаблоны, вызвав NewHTMLSet без параметров. Шаблон можно загрузить из переменной типа string, указав ему явно имя
Вернемся к нашему исходному каталогу views, пусть в нем есть два шаблона.
В Jet управляющие инструкции и выражения шаблона записываются в двойных фигурных скобках {{ ...}} В плане синтаксиса Jet напоминает Twig в PHP. В данном примере шаблон new_message.jet является производным от шаблона message.jet и определяет блок block (инструкция extends определяет базовый шаблон). А инструкции {{login}}, {{user}}, {{message}} определяют подстановку переменных в шаблон. Шаблоны позволяют в свое тело вставлять другие шаблоны без наследования при помощи include
В тексте шаблонов разрешены комментарии, которые определяются так
Для того чтобы отрендерить шаблон new_mesage.jet нам потребуется передать в него переменные user, login, message. Для этого нужно создать объект jet.VarMap производный от map.
Если одна из переменных не будет определена в jet.VarMap, то при рендеринге шаблона возникнет ошибка. Для рендеринга используем код
Шаблонизатор по умолчанию выполняет эскейпинг всех переменных для корректного отображения в HTML. Но если мы хотим в message передать уже сформированный HTML, нам потребуется определить пользовательский фильтр. Это делается так
A шаблоне message запишем так
Если мы хотим после этого провести еще несколько преобразований, то можно использовать следующий синтаксис
В качестве переменной шаблона может выступать переменная любого типа. Например, если у нас есть тип
Тогда, передав переменную user типа User в объект jet.VarMap мы сможем написать в шаблоне так
Для подстановки значения map или slice можно воспользоваться синтаксисом
Jet поддерживает итерации по переменным типа map и slice. Это осуществляется при помощи инструкции range, которая имеет несколько вариантов синтаксиса
Кроме range синтаксис шаблонов поддерживает условные оператор if, синтаксис которого ниже
Для дальнейшего изучения можно воспользоваться официальной документацией на сайте проекта.
08.07.2018 |
популярные тэги
наука
интересно
новости
технологии
история
go
golang
программирование
it
искусственный интеллект
путешествия
природа
космос
ai
базы данных
медицина
science
анализ текстов
ии
text mining
робототехника
авто
музыка
роботы
интернет
нейронные сети
robots
space
вокруг света
postgresql
алгоритмы
гитара
животные
оружие
google
nosql
авиация
здоровье
техника
auto
|