Подключение Choices.js через CDN является самым быстрым способом начать работу без сборщиков, установки npm-пакетов и настройки сборки. Такой подход особенно удобен при прототипировании интерфейсов, создании демо-страниц и интеграции в уже существующие проекты, где нет полноценного фронтенд-билда.
Библиотека требует подключения таблиц стилей, отвечающих за внешний вид выпадающих списков, тегов, поиска и анимаций. Без CSS функциональность остаётся рабочей, но интерфейс теряет структурированность и визуальную логику.
Основной файл стилей подключается через CDN:
Подключение выполняется внутри <head>
HTML-документа:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/choices.js/public/assets/styles/choices.min.css">
Стили определяют базовую сетку компонента, поведение раскрывающегося списка, отображение выбранных элементов и состояние фокуса. При необходимости кастомизации эти стили могут переопределяться через собственные CSS-правила.
Функциональная часть библиотеки подключается отдельно и должна
загружаться после HTML-структуры или с использованием
defer.
CDN-версия скрипта:
Подключение в HTML:
<script src="https://cdn.jsdelivr.net/npm/choices.js/public/assets/scripts/choices.min.js"></script>
При использовании атрибута defer загрузка скрипта
откладывается до завершения парсинга DOM:
<script src="https://cdn.jsdelivr.net/npm/choices.js/public/assets/scripts/choices.min.js" defer></script>
Такой подход предотвращает ошибки, связанные с отсутствием DOM-элементов на момент инициализации.
После подключения CSS и JS необходимо подготовить элемент формы, к
которому будет применяться библиотека. Обычно используется
<select>:
<select id="city-select">
<option value="karaganda">Караганда</option>
<option value="astana">Астана</option>
<option value="almaty">Алматы</option>
</select>
Элемент должен присутствовать в DOM до выполнения инициализации, иначе экземпляр не сможет быть создан.
После загрузки библиотеки создаётся экземпляр, который преобразует
стандартный <select> в расширенный интерфейс.
<script>
document.addEventListener('DOMContentLoaded', function () {
const element = document.getElementById('city-select');
const instance = new Choices(element, {
searchEnabled: true,
removeItemButton: true,
shouldSort: false
});
});
</script>
Параметры конфигурации управляют поведением компонента:
searchEnabled включает встроенный поиск по спискуremoveItemButton добавляет возможность удаления
выбранных элементовshouldSort контролирует автоматическую сортировку
значенийИспользование CDN предполагает внешнюю загрузку ресурсов, что влияет на поведение приложения:
Браузеры часто кешируют файлы, загруженные с популярных CDN, что ускоряет повторные визиты и снижает нагрузку на сервер.
При необходимости можно использовать конкретную версию библиотеки, чтобы избежать несовместимости с будущими изменениями:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/choices.js@10.2.0/public/assets/styles/choices.min.css">
<script src="https://cdn.jsdelivr.net/npm/choices.js@10.2.0/public/assets/scripts/choices.min.js"></script>
Фиксация версии обеспечивает предсказуемое поведение интерфейса и предотвращает неожиданные изменения API.
CDN-подключение используется не только в статических HTML-файлах, но и в:
В таких сценариях библиотека загружается глобально и становится
доступной через window.Choices.
После подключения можно убедиться в доступности библиотеки через консоль:
console.log(typeof Choices);
Результат function подтверждает успешную загрузку. Если
возвращается undefined, это указывает на ошибку подключения
CDN или порядок загрузки скриптов.
При использовании CDN часто встречаются следующие проблемы:
Каждая из этих ситуаций приводит к частичной или полной потере функциональности компонента, включая некорректное отображение списка или отсутствие реакции на пользовательские действия.