Naive UI — современная библиотека компонентов для Vue 3, обеспечивающая богатый набор визуальных элементов с минимальной настройкой. Одним из способов интеграции Naive UI в проект является подключение через CDN. Этот подход особенно удобен для быстрого прототипирования, небольших проектов и случаев, когда не требуется сложная сборка через Vite или Webpack.
Для работы Naive UI через CDN необходимо подключить два типа ресурсов:
Пример подключения через официальный CDN:
<!-- Стили Naive UI -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/naive-ui@2/dist/naive-ui.css">
<!-- Vue 3 -->
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<!-- Naive UI -->
<script src="https://cdn.jsdelivr.net/npm/naive-ui@2/dist/naive-ui.min.js"></script>
Ключевые моменты:
@2 или другую
актуальную версию, чтобы избежать несовместимости с Vue.После подключения скриптов создается экземпляр Vue и регистрируется Naive UI как плагин:
<div id="app">
<n-button @click="clicked">Нажми меня</n-button>
</div>
<script>
const { createApp, ref } = Vue;
const { create, NButton } = naiveUI;
const app = createApp({
setup() {
const clicked = () => alert('Кнопка нажата');
return { clicked };
}
});
app.use(create());
app.component('NButton', NButton);
app.mount('#app');
</script>
Особенности:
create() для установки плагина
Naive UI.app.component().naiveUI
после подключения скрипта.Naive UI предоставляет более 50 готовых компонентов: кнопки, формы, модальные окна, таблицы, уведомления и многое другое. Через CDN регистрация компонентов возможна двумя способами:
app.use(create());
Все компоненты Naive UI будут доступны без отдельной регистрации. Удобно для быстрого прототипирования, но увеличивает размер страницы.
app.component('NButton', NButton);
app.component('NInput', NInput);
Позволяет подключать только нужные компоненты, экономя ресурсы.
Naive UI поддерживает глобальные настройки темы и локализации через объект плагина:
const naive = create({
theme: {
common: {
primaryColor: '#42b983'
}
},
locale: 'ru-RU'
});
app.use(naive);
theme.common.primaryColor позволяет задать основной
цвет для всех компонентов.locale управляет локализацией элементов, таких как
календарь, уведомления и кнопки.CDN-версия полностью совместима с Composition API:
const { ref } = Vue;
app.component('Counter', {
template: `<div>{{ count }} <n-button @click="increment">+</n-button></div>`,
setup() {
const count = ref(0);
const increment = () => count.value++;
return { count, increment };
}
});
Компоненты Naive UI можно использовать как внутри шаблонов Vue, так и
через render-функции, используя API h().
Для использования иконок Naive UI через CDN необходимо подключить отдельный пакет:
<script src="https://cdn.jsdelivr.net/npm/@vicons/ionicons@latest/dist/ionicons.min.js"></script>
После этого иконки регистрируются аналогично компонентам:
const { NIcon } = naiveUI;
const { IonAdd } = viconsIonicons;
app.component('NIcon', NIcon);
app.component('IonAdd', IonAdd);
Комбинация с NIcon позволяет интегрировать любую
SVG-иконку в кнопки и другие элементы интерфейса.
@latest может привести к
неожиданным несовместимостям при обновлении. Рекомендуется фиксировать
версию.<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Naive UI CDN</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/naive-ui@2/dist/naive-ui.css">
<script src="https://unpkg.com/vue@3/dist/vue.global.prod.js"></script>
<script src="https://cdn.jsdelivr.net/npm/naive-ui@2/dist/naive-ui.min.js"></script>
</head>
<body>
<div id="app">
<n-button @click="showAlert">Нажми меня</n-button>
</div>
<script>
const { createApp } = Vue;
const { create, NButton } = naiveUI;
const app = createApp({
setup() {
const showAlert = () => alert('Привет, Naive UI!');
return { showAlert };
}
});
app.use(create());
app.component('NButton', NButton);
app.mount('#app');
</script>
</body>
</html>
Этот пример демонстрирует полную интеграцию Naive UI через CDN с использованием кнопки и alert-функции. Все компоненты подключаются мгновенно, без сборки и дополнительных инструментов.