Naive UI — это современная библиотека компонентов для Vue 3, ориентированная на простоту интеграции и гибкость кастомизации. Она предоставляет полный набор готовых к использованию компонентов: от кнопок и форм до сложных таблиц и модальных окон.
Компоненты Naive UI можно импортировать как глобально, так и
локально. Глобальная регистрация производится через плагин
create:
import { createApp } from 'vue';
import { create, NButton, NInput } from 'naive-ui';
import App from './App.vue';
const naive = create({
components: [NButton, NInput]
});
const app = createApp(App);
app.use(naive);
app.mount('#app');
Локальный импорт удобен для изоляции компонентов и уменьшения размера бандла:
import { NButton } from 'naive-ui';
export default {
components: { NButton }
};
Naive UI использует CSS-in-JS подход, позволяющий управлять стилями через пропсы и тему. Основные методы кастомизации:
const myThemeOverrides = {
Button: {
borderRadius: '8px',
color: '#1890ff'
}
};
Кнопка с множеством вариантов: primary,
secondary, success, error, а
также режимы loading и disabled.
<NButton type="primary" loading>Отправить</NButton>
Ключевые возможности:
size: small, medium,
large.ghost: прозрачная кнопка с обводкой.onClick: обработка событий.Компонент ввода с поддержкой разных типов: text,
password, textarea. Особенности:
clearable: кнопка очистки поля.maxlength: ограничение длины текста.size и status: управление визуальным
состоянием.<NInput v-model:value="username" placeholder="Введите имя" clearable />
Выпадающий список с поддержкой мультивыбора и фильтрации:
<NSelect v-model:value="selected" :options="options" multiple />
Параметры:
filterable — позволяет вводить текст для поиска в
списке.remote — подгрузка данных асинхронно.clearable — очистка выбранных значений.Таблица данных с поддержкой пагинации, сортировки и кастомных колонок:
<NDataTable :columns="columns" :data="tableData" :pagination="{ pageSize: 10 }" />
Особенности:
sortable).render).expandable).Модальное окно с динамическим контентом и кнопками действий:
<NModal v-model:show="isModalVisible" title="Подтверждение">
<template #footer>
<NButton @click="isModalVisible = false">Закрыть</NButton>
<NButton type="primary" @click="submitAction">Сохранить</NButton>
</template>
</NModal>
Пропсы:
show — управление видимостью.maskClosable — закрытие при клике на затемнённый
фон.on-close — хук закрытия.Naive UI предоставляет мощный компонент NForm, который объединяет поля ввода с валидацией:
<NForm :model="formData" :rules="formRules" ref="formRef">
<NFormItem label="Email" path="email">
<NInput v-model:value="formData.email" />
</NFormItem>
<NFormItem label="Пароль" path="password">
<NInput type="password" v-model:value="formData.password" />
</NFormItem>
</NForm>
Основные моменты:
model — объект данных формы.rules — объект правил валидации.ref и методы validate(),
reset() позволяют программно проверять форму и сбрасывать
поля.Naive UI предоставляет хуки для программного управления компонентами, например:
useMessage — всплывающие уведомления.useDialog — создание динамических модальных окон.useNotification — системные уведомления с кастомной
позицией и длительностью.import { useMessage } from 'naive-ui';
const message = useMessage();
message.success('Операция выполнена успешно');
v-model:value вместо двух отдельных
пропсов для синхронизации состояния.theme-overrides вместо глобального CSS для
точечного управления стилями.Naive UI легко интегрируется с Vue Router и Pinia, поддерживает
TypeScript и динамическую подгрузку компонентов через
defineAsyncComponent. Это позволяет строить масштабируемые
интерфейсы с минимальной зависимостью от внешних библиотек.
Комплексный подход к компонентам Naive UI позволяет создавать приложения с единым визуальным стилем, мощной системой управления состоянием и продуманной логикой взаимодействия с пользователем.