Noty — это легковесная библиотека для отображения уведомлений на веб-страницах. Для её использования необходимо подключить CSS и JS файлы. Наиболее простой способ — подключение через 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';
Для отображения уведомления используется конструктор
Noty с объектом конфигурации:
new Noty({
text: 'Пример уведомления',
type: 'success',
timeout: 3000,
layout: 'topRight',
theme: 'metroui'
}).show();
Основные параметры:
text — текст уведомления.type — тип уведомления: alert,
success, error, warning,
information.timeout — время отображения в миллисекундах. Если
false, уведомление будет оставаться до закрытия
вручную.layout — положение на экране: topLeft,
topCenter, topRight, bottomLeft,
bottomCenter, bottomRight,
center.theme — визуальная тема: relax,
metroui, mint.Noty поддерживает несколько типов уведомлений, каждый из которых имеет свой стиль и назначение:
Пример создания уведомления с типом error:
new Noty({
text: 'Произошла ошибка!',
type: 'error',
timeout: 5000,
layout: 'bottomRight'
}).show();
layout отвечает за позицию уведомления на экране. Noty
поддерживает девять основных вариантов:
topLeft,
topCenter, topRight.bottomLeft,
bottomCenter, bottomRight.center.new Noty({
text: 'Центральное уведомление',
layout: 'center',
timeout: 4000
}).show();
Темы управляют визуальным оформлением уведомлений. Noty поставляется
с набором встроенных тем, которые можно комбинировать с собственными
стилями. Пример использования темы mint:
new Noty({
text: 'Уведомление с темой mint',
type: 'information',
theme: 'mint'
}).show();
Для создания собственной темы необходимо определить CSS-класс с соответствующими стилями и подключить его в проект.
Noty позволяет детально настраивать поведение уведомлений:
click, button, hover.onShow, onClose, onHover.Пример уведомления с прогресс-баром и кнопкой закрытия:
new Noty({
text: 'Уведомление с прогресс-баром',
type: 'success',
timeout: 4000,
progressBar: true,
closeWith: ['button']
}).show();
Noty управляет уведомлениями в виде очереди, чтобы они не накладывались друг на друга. Можно создавать несколько уведомлений подряд, и они будут автоматически выстраиваться:
new Noty({text: 'Первое уведомление', type: 'alert', timeout: 2000}).show();
new Noty({text: 'Второе уведомление', type: 'success', timeout: 2000}).show();
Для сложных сценариев можно использовать методы управления очередью:
Noty.closeAll() — закрывает все уведомления.notyInstance.close() — закрывает конкретное
уведомление.notyInstance.setText('Новый текст') — обновляет текст
существующего уведомления.Noty позволяет добавлять интерактивные кнопки с обработчиками событий:
new Noty({
text: 'Вы хотите продолжить?',
type: 'alert',
buttons: [
Noty.button('Да', 'btn btn-success', function () {
console.log('Пользователь согласился');
}),
Noty.button('Нет', 'btn btn-error', function () {
console.log('Пользователь отказался');
})
]
}).show();
Кнопки можно стилизовать через собственные CSS-классы и задавать им произвольные обработчики.
Noty предоставляет события для контроля жизненного цикла уведомлений:
onShow — срабатывает при показе уведомления.onClose — срабатывает при закрытии уведомления.onClick — срабатывает при клике на уведомление.onHover — срабатывает при наведении курсора.Пример использования колбэков:
new Noty({
text: 'Уведомление с колбэками',
type: 'information',
timeout: 3000,
callbacks: {
onShow: () => console.log('Уведомление показано'),
onClose: () => console.log('Уведомление закрыто')
}
}).show();
Noty легко интегрируется с популярными JavaScript-фреймворками, включая Vue, React и Angular. Для этого достаточно использовать стандартные методы создания уведомлений внутри компонентов и хуков жизненного цикла, обеспечивая реактивность и динамическое обновление уведомлений.
Noty оптимизирован для работы с большим количеством уведомлений:
timeout и progressBar позволяет
гибко управлять видимостью уведомлений без лишних рендеров.Эти особенности делают библиотеку подходящей для проектов любого масштаба, от простых лендингов до крупных веб-приложений с динамическим контентом.