Подстановка 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

5.2 Go

5.3 PHP

5.4 Ruby

5.5 Python

5.6 Java

5.7 C++

5.8 Swift

Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.