Войти Регистрация
Фронтенд

37. Шаблоны уведомлений в личном кабинете МТС

Лёгкая

Уведомления в личном кабинете МТС приходят из CMS шаблонами: «Списано {{ amount }} ₽ за тариф {{ tariff.name }}». Шаблоны пишут редакторы, данные приходят из биллинга, а показываем мы через innerHTML.

Напишите render(tpl, data). Метка — {{ путь }}: имя поля или путь через точку, пробелы внутри скобок допустимы. Значение превращается в строку: 0 и false выводятся как есть, null, undefined и отсутствующее поле — пустая строка.

Значение экранируется: & → &amp;, < → &lt;, > → &gt;, " → &quot;, ' → &#39;. Незакрытая метка {{ percent остаётся в тексте без изменений.

В работе: Тексты уведомлений и писем, подписи в интерфейсе из CMS, простые шаблоны без фреймворка.

Пример 1: одно поле

Аргументы теста
"Баланс: {{balance}} ₽", {"balance": 350}
Ожидается
"Баланс: 350 ₽"

Пример 2: путь и пробелы

Аргументы теста
"Тариф {{ tariff.name }} до {{tariff.until}}", {"tariff": {"name": "Мой безлимит", "until": "30.11"}}
Ожидается
"Тариф Мой безлимит до 30.11"
Как проверяем Объявите render — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 9: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function render(tpl, data) // → string
строкирегулярные выраженияэкранирование

Источник: на задачах МТС: уведомления личного кабинета. Условие пересказано своими словами.