Поиск публикаций
Работа с шаблонами
Рендеринг шаблона
шаблон.рендерить(шаблон, данные)
Выполняет подстановку значений из объекта данные в строку шаблон. Плейсхолдеры в шаблоне имеют вид {{ ключ }} и заменяются на соответствующие значения из объекта данных.
Возвращает: строка — результат рендеринга с подставленными значениями.
Важно: Если ключ не найден в объекте данных, плейсхолдер не заменяется (остаётся как есть). Значения могут быть любого типа (числа, строки, логические) — они автоматически преобразуются в строки.
Пример из теста:
₽данные1 = {"имя": "Мир"}; ₽шаблон = "Привет, {{ имя }}!"; ₽результат1 = шаблон.рендерить(₽шаблон, ₽данные1); вывод(₽результат1 + "\n"); // "Привет, Мир!"
Синтаксис шаблонов
Шаблон — это обычная строка, в которой плейсхолдеры выделяются двойными фигурными скобками {{ }}.
- Простая подстановка:
{{ ключ }}— заменяется на значение свойстваключиз объекта данных. - Пробелы: Пробелы внутри фигурных скобок игнорируются, поэтому
{{ключ}},{{ ключ }}и{{ ключ }}работают одинаково. - Экранирование: Специальных символов экранирования нет; шаблон рендерится как есть, без HTML-экранирования. Если нужна безопасная вставка в HTML, используйте модуль «строки.экранироватьHTML» отдельно.
- Вложенные объекты: Поддерживается доступ через точку, например
{{ user.name }}. Для этого в данных должен быть объект с ключомuser, внутри которого есть свойствоname. - Массивы: Прямая подстановка массива преобразует его в строку вида
элемент1,элемент2,.... Для более сложной работы используйте циклы (в текущей версии не поддерживаются).
Пример с вложенным объектом:
₽данные = { "user": { "name": "Анна", "age": 25 } }; ₽шаблон = "Пользователь: {{ user.name }}, возраст {{ user.age }}"; ₽результат = шаблон.рендерить(₽шаблон, ₽данные); // "Пользователь: Анна, возраст 25"
Полный пример
Ниже приведён скрипт, демонстрирующий использование модуля «шаблон» с различными типами данных.
// Простой шаблон ₽данные1 = {"имя": "Мир"}; ₽шаблон1 = "Привет, {{ имя }}!"; ₽результат1 = шаблон.рендерить(₽шаблон1, ₽данные1); вывод(₽результат1 + "\n"); // "Привет, Мир!" // Вложенный объект ₽данные2 = { "user": { "name": "Алексей", "age": 30 }, "city": "Москва" }; ₽шаблон2 = "Пользователь {{ user.name }}, {{ user.age }} лет, из {{ city }}"; ₽результат2 = шаблон.рендерить(₽шаблон2, ₽данные2); вывод(₽результат2 + "\n"); // "Пользователь Алексей, 30 лет, из Москва" // Отсутствующий ключ — остаётся без изменений ₽данные3 = { "a": 1 }; ₽шаблон3 = "Значение: {{ b }}"; ₽результат3 = шаблон.рендерить(₽шаблон3, ₽данные3); вывод(₽результат3 + "\n"); // "Значение: {{ b }}" // Числовые значения автоматически преобразуются ₽данные4 = { "price": 99.99, "qty": 2 }; ₽шаблон4 = "Итого: {{ price }} × {{ qty }} = {{ price * qty }}"; // Обратите внимание: арифметика внутри {{ }} НЕ поддерживается. // Вычисляйте результат заранее. ₽сумма = ₽данные4.price * ₽данные4.qty; ₽данные4.total = ₽сумма; ₽шаблон4 = "Итого: {{ price }} × {{ qty }} = {{ total }}"; ₽результат4 = шаблон.рендерить(₽шаблон4, ₽данные4); вывод(₽результат4 + "\n");