Для работы с Noty необходимо подключить библиотеку через пакетный менеджер или напрямую через CDN. Наиболее распространённый способ — установка через npm:
npm install noty
После установки подключение в проекте выглядит следующим образом:
import Noty from 'noty';
import 'noty/lib/noty.css';
import 'noty/lib/themes/mint.css';
CDN-подключение позволяет использовать библиотеку без установки:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/noty/lib/noty.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/noty/lib/themes/mint.css" />
<script src="https://cdn.jsdelivr.net/npm/noty/lib/noty.min.js"></script>
Создание уведомления выполняется через конструктор Noty,
которому передаются объект с параметрами:
new Noty({
text: 'Сообщение успешно отправлено',
type: 'success',
timeout: 3000,
layout: 'topRight',
theme: 'mint',
}).show();
Ключевые параметры:
text — текст уведомления.type — тип уведомления: alert,
success, warning, error,
info.timeout — время жизни уведомления в миллисекундах. Если
false, уведомление останется до закрытия вручную.layout — позиция на экране (topRight,
topLeft, bottomRight, bottomLeft,
topCenter, bottomCenter,
center).theme — визуальная тема.Noty предоставляет методы управления уведомлениями после их создания:
show() — отображает уведомление на экране.close() — закрывает уведомление и очищает связанные
ресурсы.setText(newText) — изменяет текст уведомления
динамически.setType(newType) — изменяет тип уведомления на
лету.Пример динамического управления:
const notification = new Noty({
text: 'Загрузка данных...',
type: 'info',
timeout: false,
}).show();
setTimeout(() => {
notification.setText('Данные успешно загружены');
notification.setType('success');
notification.close();
}, 3000);
При создании множества уведомлений важно контролировать их удаление.
Noty автоматически удаляет DOM-элементы после закрытия уведомления, если
использовать метод close().
Основные правила:
Использовать close() для динамически
создаваемых уведомлений Уведомления, оставленные без закрытия,
сохраняются в DOM, что приводит к росту памяти при активной работе
приложения.
Отслеживать глобальные события Noty позволяет
подписываться на события жизненного цикла: onShow,
onClose, onDestroy. Это удобно для очистки
связанных данных:
const notification = new Noty({
text: 'Процесс завершён',
timeout: 5000,
callbacks: {
onClose: function() {
console.log('Уведомление закрыто');
},
onDestroy: function() {
console.log('Ресурсы уведомления освобождены');
}
}
}).show();Использовать фабрики уведомлений с повторным использованием В проектах с частым показом одинаковых сообщений лучше создавать шаблон уведомления один раз и переиспользовать его, изменяя только текст и тип. Это снижает нагрузку на память и ускоряет рендеринг.
Ограничение количества одновременно отображаемых уведомлений Для предотвращения переполнения экрана и DOM лучше хранить массив активных уведомлений и автоматически закрывать самые старые при достижении лимита:
const activeNoties = [];
const MAX_ACTIVE = 5;
function showNotification(message) {
if (activeNoties.length >= MAX_ACTIVE) {
const oldest = activeNoties.shift();
oldest.close();
}
const n = new Noty({ text: message, timeout: 4000 }).show();
activeNoties.push(n);
}Очистка слушателей и сторонних ресурсов Если
уведомление использует обработчики событий или асинхронные процессы,
важно отписываться от них при закрытии. onClose и
onDestroy идеально подходят для таких задач.
timeout для коротких уведомлений и
close() для длительных.В современных приложениях на React, Vue или
Angular важно контролировать создание уведомлений через
компоненты жизненного цикла:
В React — уничтожать уведомления в
useEffect с очисткой:
useEffect(() => {
const n = new Noty({ text: 'Привет', timeout: 3000 }).show();
return () => n.close();
}, []);В Vue — закрывать уведомления в
beforeDestroy или onUnmounted.
В Angular — использовать сервис, который хранит
активные уведомления и закрывает их при уничтожении компонента.
Эти подходы позволяют избежать накопления неиспользуемых объектов и гарантируют эффективное управление памятью.