Библиотека Noty предоставляет мощный и гибкий
инструмент для отображения уведомлений на веб-страницах. Основной
элемент работы с Noty — объект уведомления, создаваемый через
конструктор new Noty(options). Ключевым параметром является
объект options, который задаёт поведение уведомления, его
визуальный стиль и логику отображения.
Пример базового уведомления:
new Noty({
type: 'success',
text: 'Данные успешно обновлены',
timeout: 3000,
progressBar: true,
layout: 'topRight'
}).show();
Ключевые параметры:
type — определяет визуальное оформление
(alert, success, error,
warning, info).text — содержимое уведомления (может содержать
HTML).timeout — время автоматического закрытия в
миллисекундах; значение false оставляет уведомление на
экране до явного закрытия.progressBar — отображение индикатора прогресса времени
жизни уведомления.layout — позиция на экране (topRight,
topLeft, bottomRight, bottomLeft,
topCenter, bottomCenter,
center).Noty поддерживает динамическое обновление уведомлений после их
создания с помощью метода update(options). Этот метод
позволяет изменять текст, тип и даже другие визуальные параметры без
необходимости создавать новое уведомление.
Пример обновления текста уведомления:
let notification = new Noty({
type: 'info',
text: 'Процесс запускается...',
timeout: false,
progressBar: true
}).show();
setTimeout(() => {
notification.update({
type: 'success',
text: 'Процесс завершён успешно'
});
}, 2000);
Особенности метода update:
options.type, что автоматически обновляет
цвет и иконку уведомления.text динамически, включая
HTML-разметку.theme, layout и
других параметров, хотя некоторые изменения могут требовать вызова
метода show() повторно для корректного применения.При обновлении уведомления важно учитывать поведение прогресс-бара.
Если уведомление уже отображается с индикатором, вызов
update() с новым timeout корректно
пересчитывает оставшееся время.
let notify = new Noty({
type: 'warning',
text: 'Сохраняем данные...',
timeout: 5000,
progressBar: true
}).show();
setTimeout(() => {
notify.update({
text: 'Данные сохранены',
type: 'success',
timeout: 2000
});
}, 3000);
В этом примере уведомление обновляется через 3 секунды, прогресс-бар автоматически адаптируется под новое время жизни.
Noty позволяет привязывать обработчики событий к уведомлениям. После
обновления уведомления с помощью update() старые события
сохраняются, но можно добавить новые:
let n = new Noty({
type: 'info',
text: 'Загрузка...',
timeout: false
}).show();
n.on('onClose', () => console.log('Уведомление закрыто'));
setTimeout(() => {
n.update({
text: 'Загрузка завершена',
type: 'success'
});
n.on('onClick', () => console.log('Клик по уведомлению'));
}, 2000);
Таким образом, можно комбинировать события закрытия, клика и показа уведомления с динамическими обновлениями содержимого.
setTimeout и Promise для последовательных
обновленийДля сложных сценариев, таких как последовательное информирование о ходе процесса, удобно использовать цепочки обновлений с задержкой:
let updateNotify = new Noty({
type: 'info',
text: 'Начало обновления',
timeout: false
}).show();
setTimeout(() => {
updateNotify.update({ text: 'Обновление данных 50%', type: 'warning' });
}, 1000);
setTimeout(() => {
updateNotify.update({ text: 'Обновление завершено', type: 'success', timeout: 3000 });
}, 3000);
Такая техника позволяет создавать плавные уведомления о прогрессе и изменениях состояния процесса.
layout после отображения, если
требуется мгновенное визуальное перемещение — лучше создать новое
уведомление.animation
в конфигурации уведомления. Метод update() корректно
работает с анимациями open и close.update() в короткий промежуток могут создавать задержки в
анимации.update() для сообщений о процессе или
статусе операций, чтобы не создавать новые уведомления каждый раз.Эти возможности делают Noty идеальным инструментом для построения интерактивных уведомлений и контроля процесса обновления данных на веб-страницах.