Обновление legacy-кода

В процессе разработки веб-приложений часто приходится работать с устаревшим кодом, который нуждается в модернизации. Одним из таких случаев может быть замена устаревших решений для отображения уведомлений в интерфейсе на более современный и функциональный подход. В этой статье рассмотрено, как обновить legacy-код с использованием библиотеки SweetAlert.

Зачем обновлять код?

Современные веб-приложения требуют гибкости, удобства и хорошей визуальной презентации. Устаревшие методы для вывода сообщений, такие как стандартные alert, confirm или prompt, часто не удовлетворяют этим требованиям, предоставляя базовую функциональность без поддержки кастомизации, анимации и возможности работы с асинхронными операциями.

Использование библиотеки SweetAlert позволяет улучшить внешний вид и пользовательский опыт за счет более красивых, настраиваемых и информативных уведомлений. Это особенно важно для приложений, которые активно взаимодействуют с пользователем и требуют быстрых, точных и приятных в использовании уведомлений.

Основы работы с SweetAlert

SweetAlert — это библиотека для отображения красивых модальных окон с сообщениями. Она позволяет создавать уведомления с различными стилями, иконками, кнопками и действиями. В отличие от стандартных методов вывода сообщений, SweetAlert поддерживает значительную кастомизацию и простоту интеграции.

Для начала работы с SweetAlert необходимо подключить саму библиотеку. Это можно сделать двумя способами: через CDN или установив её с помощью npm.

Подключение через CDN

Для подключения SweetAlert через CDN достаточно добавить следующий тег в HTML-файл:

<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>

Установка через npm

Если проект использует Node.js и пакетный менеджер npm, можно установить SweetAlert с помощью команды:

npm install sweetalert2

После этого необходимо импортировать библиотеку в файл Jav * aScript:

import Swal from 'sweetalert2';

Заменяем стандартные alert на SweetAlert

Предположим, в старом коде используются стандартные alert и confirm для отображения сообщений и получения ответа от пользователя. Преобразуем эти функции в более удобные и визуально привлекательные с помощью SweetAlert.

Пример замены alert

В legacy-коде:

alert("Операция завершена!");

Можно заменить на:

Swal.fire('Операция завершена!');

SweetAlert позволяет легко добавлять стили, анимации и иконки, что делает уведомления более информативными.

Пример замены confirm

Если в коде используется стандартный confirm для получения подтверждения от пользователя:

if (confirm("Вы уверены?")) {
    // Выполнить действие
}

Можно использовать SweetAlert с подтверждением в модальном окне:

Swal.fire({
    title: 'Вы уверены?',
    text: "Это действие необратимо.",
    icon: 'warning',
    showCancelButton: true,
    confirmButtonText: 'Да, продолжить',
    cancelButtonText: 'Отмена'
}).then((result) => {
    if (result.isConfirmed) {
        // Выполнить действие
    }
});

Здесь мы создаём модальное окно с кастомным текстом, иконкой и кнопками, что значительно улучшает внешний вид и функциональность.

Кастомизация уведомлений

SweetAlert предоставляет множество опций для кастомизации внешнего вида уведомлений. Это может быть полезно при обновлении legacy-кода, чтобы сделать взаимодействие с пользователем более гибким и современным.

Настройка иконок

SweetAlert поддерживает стандартные иконки, такие как:

  • success — успех
  • error — ошибка
  • warning — предупреждение
  • info — информация
  • question — вопрос

Эти иконки могут быть добавлены через параметр icon:

Swal.fire({
    title: 'Ошибка',
    text: 'Что-то пошло не так!',
    icon: 'error'
});

Кроме того, можно добавить кастомные иконки, используя параметр imageUrl.

Кастомизация кнопок

Кнопки подтверждения и отмены можно настроить через параметры confirmButtonText и cancelButtonText. Например, если нужно изменить текст кнопок, это можно сделать так:

Swal.fire({
    title: 'Удалить файл?',
    icon: 'warning',
    showCancelButton: true,
    confirmButtonText: 'Да, удалить',
    cancelButtonText: 'Отмена'
});

Если необходимо изменить внешний вид кнопок, например, задать разные цвета или стили, это можно сделать через CSS, указав классы кнопок:

.swal2-confirm {
    background-color: #3085d6;
    border-radius: 5px;
}
.swal2-cancel {
    background-color: #aaa;
    border-radius: 5px;
}

Асинхронные уведомления

Одним из главных преимуществ SweetAlert является поддержка асинхронных операций. Это особенно полезно при работе с legacy-кодом, где необходимо выполнить несколько шагов, связанных с обработкой данных или взаимодействием с сервером.

Пример асинхронного уведомления

Если необходимо выполнить асинхронную операцию перед показом уведомления, можно использовать async/await:

async function performOperation() {
    await someAsyncFunction();

    Swal.fire({
        title: 'Операция завершена!',
        text: 'Данные успешно сохранены!',
        icon: 'success'
    });
}

В данном примере someAsyncFunction выполняется перед отображением уведомления, что позволяет синхронизировать действия пользователя с результатами на сервере.

Работа с пользователем

Если необходимо собрать информацию от пользователя в процессе работы с приложением, SweetAlert предоставляет несколько вариантов, например, поля для ввода текста или чекбоксы.

Поля для ввода

Для создания формы с полем ввода можно использовать параметр input:

Swal.fire({
    title: 'Введите ваш email',
    input: 'email',
    inputPlaceholder: 'example@example.com'
}).then((result) => {
    if (result.isConfirmed) {
        console.log('Email пользователя:', result.value);
    }
});

Этот код создаст модальное окно с полем ввода для email и, после подтверждения, вернёт введённые данные.

Чекбоксы

Для работы с чекбоксами можно использовать параметр input с типом checkbox:

Swal.fire({
    title: 'Подтвердите действия',
    input: 'checkbox',
    inputValue: 0,
    inputPlaceholder: 'Я согласен с условиями',
    showCancelButton: true
}).then((result) => {
    if (result.isConfirmed && result.value) {
        // Выполнить действие
    }
});

В этом примере пользователь должен подтвердить согласие с условиями перед продолжением.

Заключение

Обновление legacy-кода с использованием SweetAlert позволяет значительно улучшить взаимодействие с пользователем, сделать интерфейс более современным и функциональным. Библиотека предоставляет удобные и гибкие инструменты для создания уведомлений, подтверждений и других модальных окон с поддержкой кастомизации и асинхронных операций. Применение SweetAlert в существующих проектах повышает удобство разработки и улучшает опыт пользователей.