Библиотека Toastify поддерживает современный подход к организации кода через модульные системы JavaScript, включая ES Modules (ESM) и CommonJS. Это позволяет интегрировать уведомления в проекты с использованием сборщиков вроде Webpack, Parcel, Vite или Rollup, обеспечивая контроль над зависимостями и минимизацию конечного кода.
Для проектов с модульной системой удобнее использовать пакетный менеджер:
npm install toastify-js
# или
yarn add toastify-js
После установки библиотека становится доступной как модуль и может импортироваться напрямую в код:
// ES Modules
import Toastify from 'toastify-js';
import 'toastify-js/src/toastify.css';
// CommonJS
const Toastify = require('toastify-js');
require('toastify-js/src/toastify.css');
Важно подключать CSS отдельно, иначе стили уведомлений не будут применяться.
После подключения модуля можно создавать уведомления через вызов
конструктора Toastify() с объектом настроек:
Toastify({
text: "Успешная операция!",
duration: 3000, // Продолжительность отображения
gravity: "top", // Расположение: "top" или "bottom"
position: "right", // Позиция: "left", "center", "right"
backgroundColor: "#4CAF50",
close: true // Добавить кнопку закрытия
}).showToast();
Ключевые параметры:
Современные сборщики поддерживают tree shaking, что позволяет исключать из сборки ненужные части библиотеки. Для этого необходимо импортировать только основной модуль:
import Toastify from 'toastify-js';
и избегать глобальных подключений через <script> в
HTML, чтобы сборщик мог оптимизировать код.
Toastify допускает кастомизацию внешнего вида уведомлений:
.toastify:.toastify {
font-family: 'Arial', sans-serif;
font-size: 14px;
border-radius: 8px;
}
style позволяют
применять стили напрямую:Toastify({
text: "Кастомное уведомление",
style: {
background: "linear-gradient(to right, #00b09b, #96c93d)",
color: "#fff",
fontWeight: "bold"
}
}).showToast();
Toastify поддерживает события для реагирования на пользовательские действия:
Toastify({
text: "Нажмите на меня",
onClick: function() {
console.log("Уведомление кликнуто");
},
duration: 5000
}).showToast();
setTimeout на основе duration, поскольку
встроенного события завершения нет.Для показа нескольких уведомлений одновременно необходимо создавать
несколько экземпляров Toastify:
const messages = ["Первое", "Второе", "Третье"];
messages.forEach(msg => {
Toastify({ text: msg, duration: 2000 }).showToast();
});
Каждое уведомление позиционируется поверх предыдущего, что позволяет создать имитацию очереди.
Если проект требует минимизации веса бандла, можно импортировать только JS или CSS:
// Только JS
import Toastify from 'toastify-js/dist/toastify.js';
// Только CSS
import 'toastify-js/src/toastify.css';
Такой подход особенно полезен для мобильных приложений или SPA, где важен размер финального бандла.
// React пример
import Toastify from 'toastify-js';
import 'toastify-js/src/toastify.css';
function notify() {
Toastify({ text: "Привет из React!" }).showToast();
}
angular.json
или импорт через TypeScript-модуль:import Toastify from 'toastify-js';
import 'toastify-js/src/toastify.css';
Toastify({ text: "Angular уведомление" }).showToast();
Эта структура позволяет создавать гибкие уведомления в современных приложениях, оптимизируя размер бандла и управляя стилями и поведением уведомлений на уровне модулей.