Noty — это легковесная библиотека для отображения уведомлений в веб-приложениях. Она позволяет создавать разнообразные уведомления, управлять их временем отображения, позиционированием и стилем, а также поддерживает кастомные анимации.
Для начала необходимо подключить Noty через CDN или npm.
Через CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/noty/lib/noty.css" />
<script src="https://cdn.jsdelivr.net/npm/noty/lib/noty.min.js"></script>
Через npm:
npm install noty
И затем импорт в проекте:
import Noty from 'noty';
import 'noty/lib/noty.css';
import 'noty/lib/themes/mint.css'; // Можно выбрать любую тему
Самый базовый способ — это создать объект Noty и вызвать метод
show():
new Noty({
text: 'Привет, это уведомление!',
type: 'alert', // Тип уведомления: alert, success, error, warning, info
theme: 'mint', // Тема оформления
timeout: 3000, // Автоматическое закрытие через 3 секунды
progressBar: true // Отображение полосы прогресса
}).show();
Ключевые моменты:
type отвечает за визуальный стиль уведомления.theme позволяет выбрать внешний вид.timeout управляет временем жизни уведомления.progressBar добавляет индикатор времени до
закрытия.Noty позволяет задавать место появления уведомления на экране с
помощью свойства layout:
new Noty({
text: 'Верхний правый угол',
layout: 'topRight', // topLeft, topCenter, bottomLeft, bottomRight, bottomCenter, center
type: 'success'
}).show();
Важно: Можно одновременно отображать несколько уведомлений, они будут аккуратно стековаться в выбранной позиции.
Noty поддерживает кнопки и пользовательские события.
Пример уведомления с кнопкой:
new Noty({
text: 'Удалить файл?',
type: 'warning',
buttons: [
Noty.button('Да', 'btn btn-success', function () {
console.log('Файл удалён');
}),
Noty.button('Нет', 'btn btn-error', function (notyInstance) {
notyInstance.close();
})
]
}).show();
Особенности:
buttons — массив объектов, каждый создаёт кнопку с
текстом, классом и функцией обратного вызова.notyInstance.close().Noty поддерживает встроенные анимации и кастомные анимации через CSS.
Пример с анимацией:
new Noty({
text: 'Анимированное уведомление',
type: 'info',
animation: {
open: 'animated bounceInRight', // Анимация появления
close: 'animated bounceOutLeft' // Анимация закрытия
}
}).show();
Подсказка: Для использования анимаций типа
bounceInRight нужно подключить библиотеку Animate.css.
Можно задавать идентификаторы для уведомлений, чтобы управлять их группами:
let notification = new Noty({
text: 'Идентифицированное уведомление',
type: 'alert',
id: 'uniqueNotification'
}).show();
// Позже можно закрыть по id
Noty.closeAll('#uniqueNotification');
Для удобства можно задать глобальные настройки:
Noty.overrideDefaults({
theme: 'mint',
timeout: 4000,
progressBar: true,
layout: 'topRight'
});
new Noty({ text: 'Использует глобальные настройки' }).show();
Это удобно для унификации всех уведомлений в приложении.
Noty часто применяется для отображения результатов асинхронных операций, например, после запроса к серверу:
fetch('/api/data')
.then(response => response.json())
.then(data => {
new Noty({
text: 'Данные успешно загружены',
type: 'success'
}).show();
})
.catch(error => {
new Noty({
text: 'Ошибка загрузки данных',
type: 'error'
}).show();
});
Noty не имеет встроенного параметра с названием «sunset», но эффект
постепенного исчезания уведомления реализуется через
комбинацию timeout и animation.close.
Пример плавного исчезания:
new Noty({
text: 'Сообщение исчезнет через 5 секунд',
type: 'info',
timeout: 5000,
animation: {
open: 'animated fadeIn',
close: 'animated fadeOut'
}
}).show();
Такой подход создает визуальный эффект sunset, когда уведомление плавно исчезает с экрана.
Можно создавать кастомные уведомления, подключать собственные темы и стили, интегрировать с другими библиотеками UI для отображения динамических сообщений, например, обновлений данных в реальном времени.
Советы по производительности:
id, чтобы
закрывать старые экземпляры.