Slim Select подключается через CDN как наиболее быстрый способ интеграции библиотеки без установки npm-пакетов и сборщиков. Такой подход используется в случаях, когда требуется минимальная конфигурация проекта, работа в статических HTML-страницах, прототипирование интерфейсов или внедрение готового решения в существующую инфраструктуру без изменения системы сборки.
Slim Select состоит из JavaScript-файла и стилей. Для корректной работы необходимо подключить оба ресурса: сначала CSS, затем JS.
Минимальный вариант подключения через CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/slim-select@latest/dist/slimselect.min.css">
<script src="https://cdn.jsdelivr.net/npm/slim-select@latest/dist/slimselect.min.js"></script>
После подключения библиотека становится доступной глобально через
объект SlimSelect.
Использование latest удобно для тестирования, но в
продуктивной среде предпочтительно фиксировать версию, чтобы избежать
неожиданных изменений API или поведения.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/slim-select@2.8.0/dist/slimselect.min.css">
<script src="https://cdn.jsdelivr.net/npm/slim-select@2.8.0/dist/slimselect.min.js"></script>
Фиксация версии обеспечивает стабильность интерфейса и предсказуемость работы компонентов, особенно в крупных проектах.
Помимо jsDelivr часто используется unpkg, который напрямую раздаёт пакеты из npm-реестра.
<link rel="stylesheet" href="https://unpkg.com/slim-select@2.8.0/dist/slimselect.min.css">
<script src="https://unpkg.com/slim-select@2.8.0/dist/slimselect.min.js"></script>
Оба CDN-решения эквивалентны по содержимому, различие заключается в инфраструктуре доставки и политике кэширования.
После загрузки скрипта Slim Select применяется к стандартному
элементу <select>.
<select id="example">
<option value="1">Первый вариант</option>
<option value="2">Второй вариант</option>
</select>
<script>
new SlimSelect({
select: '#example'
});
</script>
Инициализация выполняется через конструктор SlimSelect,
которому передаётся CSS-селектор или DOM-элемент.
Для оптимизации производительности скрипт можно загружать с атрибутом
defer, чтобы он не блокировал парсинг HTML.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/slim-select@2.8.0/dist/slimselect.min.css">
<script defer src="https://cdn.jsdelivr.net/npm/slim-select@2.8.0/dist/slimselect.min.js"></script>
При использовании defer важно учитывать, что
инициализация должна выполняться после полной загрузки DOM.
Если скрипт подключён в <head> с
defer или без него, безопасный способ инициализации —
обработчик события загрузки DOM:
<script>
document.addEventListener('DOMContentLoaded', function () {
new SlimSelect({
select: '#example'
});
});
</script>
Это гарантирует наличие элемента <select> в момент
создания экземпляра.
Slim Select поддерживает инициализацию нескольких элементов независимо друг от друга. При подключении через CDN каждый экземпляр создаётся отдельно.
<select class="select">
<option>Один</option>
</select>
<select class="select">
<option>Два</option>
</select>
<script>
document.querySelectorAll('.select').forEach(function(el) {
new SlimSelect({
select: el
});
});
</script>
Каждый вызов создаёт изолированный экземпляр с собственным состоянием.
При использовании нескольких UI-библиотек, работающих с
<select>, важно избегать двойной инициализации. Slim
Select не должен применяться повторно к уже преобразованному
элементу.
Практика защиты от повторной инициализации:
const elements = document.querySelectorAll('select');
elements.forEach(el => {
if (!el.dataset.slimInitialized) {
new SlimSelect({ select: el });
el.dataset.slimInitialized = 'true';
}
});
В некоторых случаях Slim Select используется внутри виджетов или
микрофронтендов. При CDN-подключении важно учитывать глобальную область
видимости window, так как библиотека регистрируется
глобально.
console.log(window.SlimSelect);
Если значение отсутствует, это указывает на некорректный порядок загрузки скриптов или блокировку CDN.
Работа через CDN зависит от доступности внешних серверов. В условиях строгих корпоративных сетей или офлайн-режима подключение может быть ограничено.
Рекомендуемая структура проверки:
При сбоях загрузки библиотека не инициализируется, а стандартный
<select> остаётся без изменений.
CDN-ресурсы можно сохранить локально, используя те же пути как основу структуры:
<link rel="stylesheet" href="/vendor/slimselect/slimselect.min.css">
<script src="/vendor/slimselect/slimselect.min.js"></script>
Такой подход сохраняет идентичность поведения при отключённом интернете и снижает зависимость от внешних источников.
CSS Slim Select отвечает за:
При подключении через CDN важно, чтобы стили загружались до
отображения интерфейса, иначе возможно кратковременное отображение
нативного <select>.
<head>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/slim-select@2.8.0/dist/slimselect.min.css">
</head>
Корректный порядок загрузки:
<select>Нарушение порядка может привести к визуальным артефактам или отсутствию функциональности.
Одновременное подключение jsDelivr и unpkg не рекомендуется, так как это приводит к дублированию скриптов и конфликту глобальных объектов.
Корректным считается выбор одного CDN-источника на весь проект.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Slim Select CDN</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/slim-select@2.8.0/dist/slimselect.min.css">
</head>
<body>
<select id="example">
<option value="1">Первый</option>
<option value="2">Второй</option>
</select>
<script src="https://cdn.jsdelivr.net/npm/slim-select@2.8.0/dist/slimselect.min.js"></script>
<script>
new SlimSelect({
select: '#example'
});
</script>
</body>
</html>