Runbooks

Выбор компонентов

Пошаговая инструкция по выбору готовых решений перед началом разработки страницы.

Применимо для: feature, change — при разработке нового функционала или изменении существующего.

Prerequisites

  • Доступ к интернету для поиска
  • Понимание требований к странице
  • Макет или описание страницы

Шаги

1. Декомпозиция страницы

Разбить страницу на логические блоки:

Пример: Страница списка заказов

Блоки:

  • Header с фильтрами
  • Таблица данных
  • Пагинация
  • Модальное окно деталей
  • Графики статистики

2. Поиск в shared-модулях (ПЕРВЫЙ ПРИОРИТЕТ)

Вдруг уже решали эту задачу!

Проверить существующие компоненты и composables:

# Проверить ui-kit
ls packages/ui/components/

# Проверить helpers
ls packages/helpers/

# Проверить types
ls packages/types/

Типичные компоненты в UI layer:

  • Доменные компоненты (OrderCard, ServiceBadge и т.д.)
  • Кастомизированные обёртки над Nuxt UI
  • Специфичные формы

3. Поиск в Nuxt UI

URL: https://ui.nuxt.com/components

Для каждого блока проверить наличие компонента:

БлокКомпонент Nuxt UI
КнопкиUButton
Текстовые поляUInput
Выпадающие спискиUSelect, USelectMenu
ТаблицыUTable
ПагинацияUPagination
Модальные окнаUModal
КарточкиUCard
ТабыUTabs
ФормыUForm, UFormGroup
АлертыUAlert
БейджиUBadge
ДропдауныUDropdown
ТостыuseToast()

4. Поиск в Nuxt Charts

URL: https://nuxtcharts.com

Если нужны графики:

Тип графикаКомпонент
Линейный<Chart type="line" />
Столбчатый<Chart type="bar" />
Круговой<Chart type="pie" />
Кольцевой<Chart type="doughnut" />
Точечный<Chart type="scatter" />

5. Поиск в Nuxt Modules

URL: https://nuxt.com/modules

Ключевые слова для поиска:

ФункционалПоисковый запрос
Календарьcalendar, date
Картаmap, leaflet
Редакторeditor, wysiwyg
Загрузка файловupload, dropzone
Маски вводаmask, maska
Иконкиicon, icons
Анимацииmotion, animation

Критерии выбора модуля:

  • Обновлялся < 6 месяцев
  • TypeScript поддержка
  • > 100 GitHub stars
  • MIT/Apache лицензия
  • Совместим с Nuxt 4

6. Принятие решения

Заполнить таблицу решений:

БлокРешениеИсточник
Статус заказаOrderStatusBadgeUI layer
ФильтрыUInput, USelectNuxt UI
ТаблицаUTableNuxt UI
ПагинацияUPaginationNuxt UI
ГрафикиChartNuxt Charts
МодалкаUModalNuxt UI

7. Обоснование кастомной разработки

Если готового решения нет, задокументировать:

Кастомный компонент: Название

Причина:

  • Почему не подошёл UI layer
  • Почему не подошёл Nuxt UI
  • Почему не подошёл Nuxt Modules
  • Уникальные требования

Проверено:

  • Shared-модули: результат поиска
  • Nuxt UI: результат поиска
  • Nuxt Modules: результат поиска
  • npm: результат поиска

8. Документирование в MR

В описании MR указать использованные решения:

UI layer

  • OrderStatusBadge — статус заказа
  • ServiceCard — карточка услуги

Nuxt UI

  • UTable — таблица заказов
  • UPagination — пагинация
  • UModal — детали заказа
  • UButton, UInput — элементы форм

Nuxt Charts

  • Chart (bar) — статистика по дням

Nuxt Modules

  • @nuxt/image — оптимизация изображений

Кастомные компоненты

  • Нет

Примеры

Пример 1: Страница Dashboard

Декомпозиция:

  1. Статистические карточки
  2. График продаж
  3. Таблица последних заказов
  4. Список уведомлений

Решения:

БлокКомпонентИсточник
КарточкиUCardNuxt UI
ГрафикChart (line)Nuxt Charts
ТаблицаUTableNuxt UI
УведомленияUAlertNuxt UI

Кастомные: 0

Пример 2: Страница создания заказа

Декомпозиция:

  1. Форма с полями
  2. Выбор услуги
  3. Выбор даты
  4. Загрузка файлов
  5. Кнопка отправки

Решения:

БлокКомпонентИсточник
ФормаUForm, UFormGroupNuxt UI
ПоляUInput, UTextareaNuxt UI
Выбор услугиUSelectMenuNuxt UI
Выбор датыVCalendar@nuxt/calendar
ЗагрузкаFileUploadUI layer
КнопкаUButtonNuxt UI

Кастомные: 0 (FileUpload уже в ui-kit)

Пример 3: Страница отчётов

Декомпозиция:

  1. Фильтры периода
  2. Графики (3 типа)
  3. Таблица с экспортом
  4. Сводка

Решения:

БлокКомпонентИсточник
ФильтрыUInput, USelectNuxt UI
Линейный графикChart (line)Nuxt Charts
Столбчатый графикChart (bar)Nuxt Charts
Круговая диаграммаChart (pie)Nuxt Charts
ТаблицаUTableNuxt UI
ЭкспортUButton + xlsxnpm xlsx
СводкаUCardNuxt UI

Кастомные: 0

Troubleshooting

Компонент не найден в Nuxt UI

  1. Проверить название: https://ui.nuxt.com/components
  2. Проверить версию @nuxt/ui в package.json
  3. Проверить импорт модуля в nuxt.config.ts

Модуль не совместим с Nuxt 4

  1. Проверить issues на GitHub
  2. Искать альтернативу: https://nuxt.com/modules
  3. Рассмотреть npm-пакет без Nuxt-обёртки

Нет подходящего готового решения

  1. Задокументировать поиск
  2. Создать issue в UI layer репозитории
  3. Реализовать минимальный кастомный компонент
  4. После стабилизации — вынести в ui-kit

Связанные документы