import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/nitro-basic/! О библиотеке'/>

# [@dxtmisha/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)

`@dxtmisha/nitro-basic` — это базовая библиотека утилит, предназначенная для создания надежных приложений с серверным рендерингом (SSR) на базе Vue 3 и Nitro. Она предоставляет набор инструментов для синхронизации состояния между сервером и клиентом, управления маршрутизацией и упрощения процесса разработки SSR-приложений.

## Установка

Чтобы начать использовать библиотеку, установите ее через npm:

```bash
npm i @dxtmisha/nitro-basic
```

## Для чего эта библиотека?

Разработка приложений с SSR (Server-Side Rendering) требует особого внимания к деталям: от изоляции состояний разных пользователей на сервере до предотвращения ошибок гидратации (hydration mismatch) на клиенте. 

`@dxtmisha/nitro-basic` берет на себя рутинные задачи по настройке окружения Nitro и Vue, обеспечивая единый механизм инициализации хранилищ, API-клиентов и маршрутизации. Она служит связующим звеном между мощными возможностями Nitro и реактивностью Vue 3.

## Что в ней есть?

Библиотека включает в себя инструменты для решения ключевых задач SSR:

**Инициализация окружения** — функции `uiCreateServerApp` и `uiCreateClientApp` предоставляют стандартизированный способ запуска приложения в разных средах, автоматически настраивая необходимые плагины и сервисы.

**Управление состоянием и хранилищами** — инструменты для работы с серверным хранилищем (`initServerStorage`) и cookie (`initCookieStorage`). Они гарантируют, что данные, полученные на сервере, будут доступны компонентам Vue через механизм `provide/inject`.

**Синхронизация маршрутизации** — утилиты для создания и инициализации роутера (`uiCreateSsrRouter`, `initServerRouter`), которые обеспечивают правильный переход по URL на стороне сервера и плавную передачу управления клиенту.

**Гидратация данных** — автоматическая генерация JSON-скриптов (`initScriptsJson`) для передачи состояния `ServerStorage` и данных `Api` с сервера на клиент, что исключает повторные запросы к API при загрузке страницы.

**Интеграция с API** — средства для настройки заголовков и источника (origin) запросов, позволяющие использовать абсолютные URL при серверных вызовах и сохранять авторизацию через проброс cookie.

**Nitro Плагины** — готовые функции для расширения возможностей Nitro, такие как кэширование API ответов на уровне сервера.

## Для кого это?

Библиотека создана для разработчиков, которые строят свои решения на стеке Vue 3 + Nitro (или Nuxt-подобные архитектуры) и нуждаются в низкоуровневых, но гибких инструментах для управления жизненным циклом SSR-приложения.

## Принципы

- **Безопасность SSR** — все инструменты спроектированы так, чтобы исключить утечки данных между запросами разных пользователей.
- **Бесшовная гидратация** — минимизация различий между серверным и клиентским состоянием.
- **Модульность** — возможность использовать как комплексные функции создания приложения, так и отдельные атомарные утилиты инициализации.
- **Интеграция** — глубокая совместимость с экосистемой `@dxtmisha/functional`.

## Git

[https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic](https://github.com/dxtmisha/dxt-ui/tree/main/packages/nitro-basic)
