Noty — это легковесная библиотека для создания уведомлений в JavaScript, которая поддерживает интеграцию с различными шаблонизаторами для динамической генерации контента уведомлений. При работе с template-движками важно понимать, как формировать шаблоны, передавать данные и управлять рендерингом уведомлений.
Mustache — один из самых популярных шаблонизаторов. Он позволяет создавать уведомления с динамическим содержимым, отделяя логику от представления.
Пример интеграции:
import Noty from 'noty';
import Mustache from 'mustache';
const template = "{{title}}: {{message}}";
const data = {
title: "Ошибка",
message: "Не удалось загрузить данные"
};
new Noty({
text: Mustache.render(template, data),
type: 'error',
timeout: 5000,
layout: 'topRight',
theme: 'metroui'
}).show();
Ключевые моменты:
Mustache.render(template, data) генерирует строку с
заменёнными переменными.text Noty позволяет
создавать уведомления с произвольной структурой.Handlebars предоставляет расширенные возможности: условные блоки, циклы, встроенные помощники.
Пример с условными блоками:
import Handlebars from 'handlebars';
import Noty from 'noty';
const template = `
{{#if success}}
{{message}}
{{else}}
{{message}}
{{/if}}
`;
const data = { success: false, message: "Ошибка при отправке формы" };
const compiled = Handlebars.compile(template);
new Noty({
text: compiled(data),
timeout: 4000,
type: data.success ? 'success' : 'error',
layout: 'topRight',
theme: 'mint'
}).show();
Особенности Handlebars:
{{#each items}} полезны для динамических списков
внутри уведомлений.EJS (Embedded JavaScript) позволяет вставлять JS-код прямо в шаблон.
Пример:
import Noty from 'noty';
import ejs from 'ejs';
const template = `
<% messages.forEach(function(msg){ %>
- <%= msg %>
<% }); %>
`;
const data = { messages: ["Событие 1", "Событие 2", "Событие 3"] };
new Noty({
text: ejs.render(template, data),
type: 'info',
timeout: 6000,
layout: 'bottomLeft',
theme: 'sunset'
}).show();
Примечания по EJS:
<%= %> экранирует вывод, а <%- %>
— нет.Для более сложных интерфейсов часто создаются функции-генераторы уведомлений, которые принимают данные и автоматически формируют уведомление:
function showNotification(type, title, message) {
const template = `${title}: ${message}`;
new Noty({
text: template,
type: type,
layout: 'topRight',
timeout: 4000,
theme: 'metroui'
}).show();
}
showNotification('success', 'Успех', 'Данные сохранены');
showNotification('error', 'Ошибка', 'Не удалось сохранить данные');
Рекомендации:
Noty позволяет использовать HTML-теги и классы, что даёт возможность легко подключать стилизованные шаблоны:
const htmlTemplate = `
{{title}}
{{message}}
{{time}}
`;
const data = {
title: "Информация",
message: "Процесс завершен успешно",
time: new Date().toLocaleTimeString()
};
new Noty({
text: Mustache.render(htmlTemplate, data),
type: 'info',
timeout: 5000,
layout: 'topCenter',
theme: 'relax'
}).show();
Выводы по использованию HTML-шаблонов: