Для работы с Naive UI в проекте на Vite необходимо сначала установить библиотеку через npm или yarn:
npm install naive-ui
# или
yarn add naive-ui
После установки компоненты Naive UI можно подключать глобально или
локально в отдельных Vue-компонентах. Для глобального подключения
следует использовать провайдер createApp:
import { createApp } from 'vue'
import App from './App.vue'
import naive from 'naive-ui'
const app = createApp(App)
app.use(naive)
app.mount('#app')
Глобальное подключение удобно для больших приложений, где большинство компонентов UI используется повсеместно. Локальное подключение позволяет экономить ресурсы и уменьшить размер итогового бандла.
Naive UI спроектирован с поддержкой tree-shaking, что позволяет исключить из сборки неиспользуемые компоненты. В Vite это особенно важно для оптимизации размера бандла. Для использования только нужных компонентов применяют локальный импорт:
import { NButton, NInput } from 'naive-ui'
export default {
components: {
NButton,
NInput
}
}
Такой подход уменьшает размер итогового файла и ускоряет загрузку приложения. Vite автоматически обрабатывает ES-модули и исключает неиспользуемый код.
Vite предоставляет несколько инструментов для оптимизации работы с библиотеками вроде Naive UI:
optimizeDeps) Vite предварительно обрабатывает
зависимости, чтобы ускорить запуск приложения. Для Naive UI
рекомендуется указать её в списке оптимизируемых модулей:// vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [vue()],
optimizeDeps: {
include: ['naive-ui']
}
})
import { defineAsyncComponent } from 'vue'
export default {
components: {
NButton: defineAsyncComponent(() => import('naive-ui/lib/button'))
}
}
Это снижает первоначальный размер бандла и ускоряет первую отрисовку страницы.
vite-plugin-compression для
gzip или brotli-сжатия, что уменьшает размер загружаемых файлов.Naive UI использует CSS-in-JS и предоставляет гибкую систему темизации. Для оптимизации важно использовать только необходимые переменные, чтобы не генерировать лишний CSS:
import { createTheme, NButton } from 'naive-ui'
const customTheme = createTheme({
common: {
primaryColor: '#42b983'
}
})
export default {
components: { NButton },
setup() {
return { customTheme }
}
}
В Vite это сокращает время сборки и уменьшает размер итогового CSS.
Vite поддерживает динамический импорт и разделение кода на чанки. При работе с Naive UI это позволяет:
Пример разделения кода:
const HomePage = () => import('./pages/HomePage.vue')
const DashboardPage = () => import('./pages/DashboardPage.vue')
const routes = [
{ path: '/', component: HomePage },
{ path: '/dashboard', component: DashboardPage }
]
Каждый чанк будет содержать только те компоненты Naive UI, которые реально нужны для конкретной страницы.
Naive UI полностью поддерживает TypeScript. Для Vite важно корректно
настроить tsconfig.json и убедиться, что типы
импортируются:
import type { NButton } from 'naive-ui'
const buttonProps: Partial<typeof NButton> = {
size: 'large'
}
Правильная типизация позволяет использовать автодополнение и предотвращает ошибки на этапе сборки, что повышает стабильность проекта.
optimizeDeps в конфиге Vite для Naive UI.Эти подходы обеспечивают быструю загрузку, меньший размер бандла и эффективное использование ресурсов, что особенно важно для крупных приложений на Vue с Naive UI и Vite.