В библиотеке Naive UI компоненты можно использовать двумя основными способами: через глобальную регистрацию и через локальную регистрацию. Глобальная регистрация делает компоненты доступными во всех частях приложения, что особенно удобно для часто используемых элементов интерфейса.
Для глобальной регистрации компонентов используется функция
create из naive-ui и метод
app.use(). Пример базовой конфигурации:
import { createApp } from 'vue';
import App from './App.vue';
import { create, NButton, NInput } from 'naive-ui';
const naive = create({
components: [NButton, NInput]
});
const app = createApp(App);
app.use(naive);
app.mount('#app');
В этом примере:
create формирует экземпляр Naive UI с набором
компонентов.components указывает, какие компоненты будут
доступны глобально.app.use(naive) подключает библиотеку к приложению
Vue.После этого NButton и NInput можно использовать в любом компоненте Vue без дополнительного импорта.
Если проект небольшой или требуется полный доступ ко всем компонентам, Naive UI позволяет регистрировать всё сразу:
import { create, NConfigProvider } from 'naive-ui';
const naive = create({
components: 'all'
});
Использование 'all' регистрирует все доступные
компоненты и утилиты, включая модальные окна, таблицы, селекты и
элементы навигации. Такой подход упрощает разработку, но увеличивает
размер финального бандла, поэтому для больших проектов рекомендуется
выбирать только необходимые компоненты.
Naive UI поддерживает глобальные настройки компонентов через
globalConfig:
const naive = create({
components: [NButton],
config: {
global: {
button: {
size: 'large',
round: true
}
}
}
});
В этом примере все кнопки в приложении по умолчанию будут круглыми и большого размера. Это позволяет централизованно управлять стилями и поведением компонентов без повторного указания свойств.
Локальная регистрация используется, когда компонент нужен только в пределах конкретного Vue-компонента. Это снижает нагрузку на бандл и повышает читаемость кода.
<template>
<n-button @click="onClick">Нажми меня</n-button>
</template>
<script>
import { NButton } from 'naive-ui';
export default {
components: {
NButton
},
methods: {
onClick() {
console.log('Кнопка нажата');
}
}
};
</script>
Особенности:
components в объекте компонента Vue содержит локально
зарегистрированные компоненты.Даже при локальной регистрации возможно применение глобальных настроек:
import { NButton, create } from 'naive-ui';
const naive = create({
config: {
global: {
button: {
type: 'primary'
}
}
}
});
export default {
components: {
NButton
}
};
В этом случае кнопка будет использовать глобальную конфигурацию
(type: 'primary'), несмотря на локальный импорт. Такой
подход комбинирует преимущества локальной регистрации с единым стилевым
стандартом.
| Характеристика | Глобальная регистрация | Локальная регистрация |
|---|---|---|
| Доступность | Во всех компонентах приложения | Только внутри конкретного компонента |
| Размер бандла | Увеличивает при регистрации многих компонентов | Минимизируется, так как импорт только необходимого |
| Простота использования | Высокая — не нужно повторно импортировать | Требует явного импорта и объявления |
| Управление конфигурацией | Поддержка глобальной конфигурации | Локальные компоненты могут наследовать глобальную конфигурацию |
Naive UI полностью совместим с TypeScript. При локальной регистрации можно использовать типы компонентов для автодополнения и проверки свойств:
import type { ButtonProps } from 'naive-ui';
import { NButton } from 'naive-ui';
export default {
components: { NButton },
methods: {
handleClick(props: ButtonProps) {
console.log(props.type);
}
}
};
Типизация помогает избежать ошибок при передаче свойств и упрощает интеграцию с IDE.
Для больших проектов удобно комбинировать оба подхода:
main.js или main.ts регистрируются
глобально базовые компоненты (кнопки, инпуты, модальные
окна).Такой подход обеспечивает баланс между удобством разработки, масштабируемостью и производительностью.