Для начала необходимо подключить библиотеку Toastify, которая позволяет создавать настраиваемые уведомления в браузере. Библиотека доступна через CDN или через пакетный менеджер npm.
Через CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
<script src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
Через npm:
npm install toastify-js
import Toastify from "toastify-js";
import "toastify-js/src/toastify.css";
После подключения библиотеки можно использовать функцию
Toastify() для создания уведомлений.
Создание простого уведомления:
Toastify({
text: "Привет, мир!",
duration: 3000, // Время отображения в миллисекундах
}).showToast();
Ключевые параметры:
text — текст уведомления.duration — время отображения (по умолчанию 3000
мс).close — добавляет кнопку закрытия
(true/false).gravity — положение по вертикали ("top"
или "bottom").position — положение по горизонтали
("left", "center", "right").backgroundColor — цвет фона уведомления.stopOnFocus — при наведении мыши на уведомление, оно не
исчезает (true/false).Пример с позиционированием и цветом:
Toastify({
text: "Сообщение об ошибке",
duration: 4000,
gravity: "top",
position: "right",
backgroundColor: "#ff6b6b",
close: true
}).showToast();
Ленивая загрузка (lazy loading) позволяет загружать уведомления только тогда, когда они действительно необходимы, снижая нагрузку на страницу и ускоряя первый рендер. В контексте Toastify это означает, что библиотека может быть подключена динамически, а уведомления создаются только при событии пользователя.
Динамическое подключение через JavaScript:
function loadToastify(callback) {
if (!window.Toastify) {
const link = document.createElement("link");
link.rel = "stylesheet";
link.href = "https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css";
document.head.appendChild(link);
const script = document.createElement("script");
script.src = "https://cdn.jsdelivr.net/npm/toastify-js";
script.onl oad = callback;
document.body.appendChild(script);
} else {
callback();
}
}
Создание уведомления после загрузки библиотеки:
loadToastify(() => {
Toastify({
text: "Уведомление загружено лениво",
duration: 3000,
backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)"
}).showToast();
});
Такой подход особенно полезен для интерфейсов с большим количеством модулей, где уведомления требуются только в отдельных частях приложения.
Ленивая загрузка уведомлений часто используется вместе с событиями пользователя, чтобы не грузить библиотеку заранее.
Пример с кнопкой:
document.getElementById("show-toast").addEventListener("click", () => {
loadToastify(() => {
Toastify({
text: "Кнопка нажата",
duration: 2500,
gravity: "bottom",
position: "center",
backgroundColor: "#007bff",
}).showToast();
});
});
В этом примере Toastify подключается только при первом клике, что экономит ресурсы до момента необходимости.
Настройка внешнего вида через CSS и классы:
Toastify({
text: "Кастомное уведомление",
className: "custom-toast",
duration: 4000,
stopOnFocus: true
}).showToast();
.custom-toast {
font-weight: bold;
border-radius: 10px;
color: #fff;
background: linear-gradient(to right, #ff7e5f, #feb47b);
box-shadow: 0 4px 10px rgba(0,0,0,0.2);
}
Использование callback-функций при закрытии уведомления:
Toastify({
text: "Уведомление с callback",
duration: 3000,
onClick: () => console.log("Нажато уведомление"),
onClose: () => console.log("Уведомление закрыто")
}).showToast();
Эта функциональность позволяет реализовать сложные сценарии взаимодействия, такие как динамическая подгрузка данных или обновление UI после закрытия уведомления.
Ленивая загрузка вместе с возможностями кастомизации Toastify позволяет создавать легкие и отзывчивые уведомления, которые экономят ресурсы и обеспечивают гибкость интерфейса.