Подстановка Mustache
2025-09-03
·
2 мин. для прочтения
Подстановка Mustache.
Содержание
1 Общая информация
- Сайт: https://mustache.github.io/
- Mustache является языком шаблонов, который используется для генерации текста на основе данных.
- Mustache использует синтаксис в виде двойных фигурных скобок
{{ }}
для обозначения мест подстановки данных. - Позволяет вставлять переменные и другие данные в шаблоны без необходимости написания сложного кода.
- Например, если у вас есть шаблон с
{{ name }}
, то при подстановке данных это место будет заменено на значение переменнойname
.
2 Особенности
- Отсутствие логики в шаблонах: Mustache фокусируется только на подстановке данных и не поддерживает условные операторы или циклы непосредственно в шаблонах.
- Кроссплатформенность: Mustache реализован на множестве языков программирования, включая JavaScript, Python, Ruby и другие.
- Простота использования: синтаксис Mustache интуитивно понятен и легко осваивается разработчиками.
- Логика в данных: Вся логика (условия, циклы) выносится в код, а не в шаблон.
- Экранирование: По умолчанию экранирует HTML-символы (
<
,>
,&
и т.д.). - Расширяемость: Можно добавлять кастомные хелперы (например, для форматирования дат).
3 Пример использования
- Пусть дан html:
<h1>Привет, {{ name }}!</h1>
<p>Ты зарегистрировался {{ date }}.</p>
- Данные для подстановки:
{
"name": "Иван",
"date": "2025-09-03"
}
- Результат:
<h1>Привет, Иван!</h1>
<p>Ты зарегистрировался 2025-09-03.</p>
- Пример шаблона с условием и списком:
{{#user}}
<h2>Профиль {{name}}</h2>
{{#posts}}
<div class="post">{{title}}</div>
{{/posts}}
{{^posts}}
<p>Нет постов.</p>
{{/posts}}
{{/user}}
4 Правила синтаксиса Mustache
4.1 Переменные
Используются двойные фигурные скобки {{variable}}
. Значение
подставляется с экранированием HTML. Для вывода без экранирования:
{{{variable}}}
или {{&variable}}
.
Пример:
<p>{{username}} написал: {{{comment}}}</p>
4.2 Секции
Списки:
{{#list}}...{{/list}}
— повторяет блок для каждого элемента массива. Пример:<ul>{{#items}}<li>{{name}}</li>{{/items}}</ul>
Условные блоки:
{{#condition}}...{{/condition}}
— отображает блок, еслиcondition
истинно (не пустой массив, неfalse
, неnull
).{{^condition}}...{{/condition}}
— отображает блок, еслиcondition
ложно.
4.3 Комментарии
Синтаксис: {{! Это комментарий}}
. Не отображаются в выходном HTML.
4.4 Частичные шаблоны
Подключаются через {{>partial}}
. Например, {{>header}}
вставит
содержимое шаблона header.mustache
.
4.5 Изменение разделителей
Можно менять {{ }}
на другие символы через {{=<% %>
}}=. Возврат к
стандартным: <%={{ }}=%>
.
4.6 Лямбда-функции
Если переменная является функцией, она вызывается с параметрами (текст блока, рендеринг). Пример для JS:
data.uppercase = () => (text, render) => render(text).toUpperCase();
В шаблоне: {{#uppercase}}Hello{{/uppercase}}
→ HELLO
.
5 Поддерживаемые языки и библиотеки
5.1 JavaScript
- Репозиторий: https://github.com/janl/mustache.js.
- Пример:
const html = Mustache.render("Hello {{name}}!", {name: "Алиса"});
5.2 Go
- Репозиторий: https://github.com/hoisie/mustache.
5.3 PHP
- Репозиторий: https://github.com/bobthecow/mustache.php.
5.4 Ruby
- Репозиторий: https://github.com/mustache/mustache.
5.5 Python
- Репозиторий: https://github.com/defunkt/pystache.
5.6 Java
- Репозиторий: https://github.com/spullara/mustache.java.
5.7 C++
- Репозиторий: https://github.com/kainjow/Mustache.
5.8 Swift
- Репозиторий: https://github.com/groue/GRMustache.swift.