Back

Nuxt UI — интуитивная библиотека компонентов для Vue-приложений

Nuxt UI — интуитивная библиотека компонентов для Vue-приложений

Создание Vue-приложения с нуля означает принятие десятков решений ещё до написания первой строки бизнес-логики: какую библиотеку компонентов использовать, как обеспечить доступность, будет ли ваша дизайн-система масштабируемой и насколько тесно она должна быть связана с фреймворком. Nuxt UI отвечает на большинство этих вопросов ещё до того, как вы откроете редактор.

Ключевые выводы

  • Nuxt UI — это бесплатная open-source библиотека компонентов для Vue, построенная на Reka UI, Tailwind CSS и Tailwind Variants, предлагающая более 125 доступных компонентов из коробки.
  • Несмотря на название, Nuxt UI работает в любом Vue-проекте через Vite-плагин, а не только в Nuxt-приложениях.
  • Поддержка доступности, TypeScript и CSS-first темизация встроены изначально, что устраняет распространённые проблемы на ранних этапах разработки.
  • Лучше всего подходит для стеков на базе Tailwind; для Material Design, copy-paste рабочих процессов или кросс-платформенных задач рассмотрите альтернативы — Vuetify, shadcn-vue или Quasar.

Что такое Nuxt UI?

Nuxt UI — это бесплатная open-source библиотека компонентов для Vue, построенная на трёх ключевых технологиях:

  • Reka UI — headless-примитивы с поддержкой доступности, которые из коробки обеспечивают навигацию с клавиатуры, управление фокусом и поддержку программ чтения с экрана
  • Tailwind CSS — utility-first стилизация с CSS-first моделью конфигурации
  • Tailwind Variants — типобезопасное API для управления вариантами компонентов и аккуратного разрешения конфликтов стилей

Результат — более 125 готовых к production компонентов, доступных по умолчанию, визуально отполированных и легко настраиваемых.

Важное уточнение: несмотря на название, Nuxt UI не является эксклюзивным для Nuxt. Он одинаково хорошо работает в любом Vue-проекте через Vite-плагин. Если вы разрабатываете на чистом Vue, Vue Router и Vite, настройка займёт всего несколько строк конфигурации.

Место Nuxt UI в экосистеме Vue

При оценке библиотеки компонентов для Vue настоящий вопрос не «достаточно ли в ней компонентов?», а «подходит ли она к тому, как я реально разрабатываю?».

Вот как Nuxt UI выглядит на фоне распространённых альтернатив:

БиблиотекаДизайн-системаTailwind-nativeДоступностьИнтеграция с Nuxt
Nuxt UIКастомная, гибкая✅ Да✅ Reka UI✅ First-class
VuetifyMaterial Design❌ Нет✅ Хорошая⚠️ Ручная
PrimeVueНастраиваемая⚠️ Опционально✅ Хорошая⚠️ Ручная
shadcn-vueКастомная✅ Да✅ Reka UI⚠️ Ручная

Если ваш стек уже включает Tailwind CSS и вам нужны высокоуровневые компоненты — таблицы данных, формы, оверлеи, навигация — без необходимости создавать их самостоятельно, Nuxt UI станет естественным выбором.

Начало работы: установка

Для Nuxt-проектов добавьте модуль в nuxt.config.ts:

export default defineNuxtConfig({
  modules: ['@nuxt/ui'],
  css: ['~/assets/css/main.css']
})

Затем оберните приложение в UApp и импортируйте стили в CSS-файле:

@import "tailwindcss";
@import "@nuxt/ui";
<!-- app.vue -->
<template>
  <UApp>
    <NuxtPage />
  </UApp>
</template>

Для стандартных Vue + Vite проектов настройте Vite-плагин:

// vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import ui from '@nuxt/ui/vite'

export default defineConfig({
  plugins: [vue(), ui()]
})

Затем зарегистрируйте плагин в main.ts и импортируйте те же CSS-стили. Компоненты и composables автоматически импортируются глобально в обеих конфигурациях.

Ключевые возможности, о которых стоит знать

Доступность без дополнительных усилий. Поскольку Nuxt UI построен на Reka UI, сложные компоненты — модальные окна, вкладки, выпадающие меню — автоматически обрабатывают ARIA-атрибуты, удержание фокуса и взаимодействие с клавиатурой. Тестировать в контексте всё ещё нужно, но фундамент прочный.

TypeScript везде. Каждое свойство, слот и событие компонента имеют типы. Темизация через app.config.ts типобезопасна, а props компонентов, слоты и composables полностью типизированы по всей библиотеке.

Темизация, которая не сопротивляется вам. Nuxt UI v4 использует CSS-first модель конфигурации. Настройка цветов, размеров и вариантов происходит в CSS или app.config.ts — никаких JavaScript-конфигов, с которыми приходится бороться.

Более 125 компонентов в 13 категориях, включая специализированные группы для дашбордов, AI-чат интерфейсов, rich text редактирования и интеграции с Nuxt Content — областей, где большинство Tailwind CSS Vue библиотек не предлагают ничего.

Когда Nuxt UI — правильный выбор

Nuxt UI имеет смысл выбирать, когда вам нужны:

  • Tailwind-native компоненты, не требующие отдельной системы дизайн-токенов
  • Доступность, обеспеченная на уровне примитивов, а не прикрученная задним числом
  • UI-компоненты для Nuxt 4 с first-class поддержкой SSR, i18n и цветовых режимов
  • Бесплатная библиотека под лицензией MIT без платных компонентов (Nuxt UI Pro был объединён с основной библиотекой в v4)

Она менее подходит, если вам нужен Material Design, вы предпочитаете копировать исходный код компонентов в свой репозиторий (тогда рассмотрите shadcn-vue) или вы разрабатываете кросс-платформенные приложения для мобильных устройств и десктопа (тогда рассмотрите Quasar).

Заключение

Nuxt UI устраняет «налог на каркас», замедляющий ранние этапы разработки на Vue. С доступными компонентами, целостной дизайн-системой и встроенным TypeScript вы можете сосредоточиться на том, что ваше приложение действительно делает, вместо того чтобы заново создавать примитивы.

Начните с официальной документации или клонируйте один из готовых шаблонов — Dashboard, SaaS, Landing или Starter — и получите работающее приложение за считанные минуты.

FAQ

Да. Несмотря на то, что название предполагает обратное, Nuxt UI поставляется с Vite-плагином, который работает в любом стандартном Vue 3 проекте. Вы устанавливаете пакет, регистрируете плагин в vite.config.ts и импортируете CSS. Компоненты и composables импортируются автоматически так же, как и в Nuxt-приложении.

Нет. Начиная с версии 4, Nuxt UI Pro был объединён с основной open-source библиотекой под лицензией MIT. Компоненты, ранее доступные только в платном тарифе, включая макеты дашбордов, продвинутые таблицы данных и блоки для лендингов, теперь свободно доступны всем пользователям без какой-либо подписки или лицензионных отчислений.

Обе библиотеки используют примитивы Reka UI и Tailwind CSS, поэтому доступность и стилизация схожи. Ключевое различие — в способе поставки: shadcn-vue копирует исходный код компонентов в ваш репозиторий для полного владения, тогда как Nuxt UI устанавливается как зависимость с темизацией через конфигурацию. Выбирайте shadcn-vue для контроля над исходным кодом, а Nuxt UI — для более быстрых обновлений и меньших накладных расходов на сопровождение.

Да, и то и другое. Поддержка цветовых режимов является first-class: компоненты автоматически адаптируются к светлой и тёмной темам через CSS-переменные. Интернационализация поддерживается через встроенную конфигурацию локалей и интеграцию с такими инструментами, как @nuxtjs/i18n, что позволяет переводить строки компонентов — например, метки пагинации и сообщения форм.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay