Back

Знакомьтесь с UnJS: фреймворк-агностичные инструменты для JavaScript

Знакомьтесь с UnJS: фреймворк-агностичные инструменты для JavaScript

Если вы использовали Nuxt или Nitro, вы уже получили преимущества от UnJS, даже не подозревая об этом. Но экосистема UnJS — это гораздо больше, чем просто деталь реализации Nuxt. Это растущая коллекция фреймворк-агностичных JavaScript-библиотек, которые любой разработчик может использовать напрямую, независимо от своего стека технологий.

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

  • UnJS — это коллекция небольших, компонуемых, TypeScript-ориентированных JavaScript-пакетов, разработанных для решения конкретных инфраструктурных задач без привязки к фреймворку.
  • Каждый пакет UnJS независим, работает в различных средах выполнения (Node.js, Deno, Bun, edge) и может использоваться вне Nuxt или любого мета-фреймворка.
  • Ключевые инструменты включают Nitro (серверный движок), h3 (HTTP-фреймворк), ofetch (обёртка для fetch), unplugin (унифицированная система плагинов), unbuild (сборщик библиотек), unimport (авто-импорты) и unenv (полифиллы для сред выполнения).
  • Фреймворк-агностичные библиотеки снижают трудности при обновлениях, улучшают переносимость и позволяют командам использовать только те компоненты, которые им нужны.

Что такое экосистема UnJS?

UnJS — это коллекция небольших, компонуемых JavaScript и TypeScript пакетов, ориентированных на решение конкретных инфраструктурных задач. Каждый пакет делает одну вещь хорошо: обработка HTTP, fetch-запросы, инструменты сборки, авто-импорты, полифиллы окружения. Ни один из них не требует от вас использования конкретного фреймворка.

Философия проста: создавать переиспользуемые примитивы, которые работают в различных средах выполнения и инструментах. Именно поэтому пакеты UnJS встречаются внутри Nuxt, Nitro, плагинов Vite и автономных CLI-инструментов. Экосистема предоставляет базовую инфраструктуру, а вы решаете, что с ней строить.

Почему фреймворк-агностичные JavaScript-библиотеки важны

Привязка к фреймворку имеет реальную цену. Команды, которые создают общие инструменты вокруг конкретного фреймворка, в конечном итоге сталкиваются с болезненными циклами обновления, несовместимыми компонентами или заброшенными библиотеками, когда экосистема движется дальше. Фреймворк-агностичные JavaScript-библиотеки обходят эту проблему, оставаясь нейтральными в своей основе.

Инструменты UnJS портативны по своей природе. Они работают в Node.js, Deno, Bun и edge-средах выполнения. Они поставляются с надёжной поддержкой TypeScript из коробки. И поскольку каждый пакет независим, вы подключаете только то, что вам нужно.

Ключевые инструменты UnJS для JavaScript-разработчиков

Вот практический обзор наиболее важных пакетов:

Nitro — серверный движок

Nitro — это серверный движок, который компилирует ваше приложение в портативный результат, развёртываемый у многих хостинг-провайдеров через пресеты развёртывания. Он обрабатывает маршрутизацию и middleware, и вам не нужен Nuxt для его использования.

h3 — минималистичный HTTP-фреймворк

h3 — это HTTP-фреймворк, используемый Nitro. h3 обычно используется вместе с Nitro для работы серверных API и middleware. Он крошечный, компонуемый и агностичен к среде выполнения — надёжная основа для создания API или middleware без накладных расходов фреймворка.

ofetch — современная обёртка для Fetch

ofetch — это поддерживаемый fetch-клиент в экосистеме UnJS (заменяющий старое название ohmyfetch). Он добавляет разумные настройки по умолчанию, такие как автоматический парсинг JSON, обработка ошибок и перехватчики — без веса полноценной библиотеки HTTP-клиента.

unplugin — унифицированная система плагинов

unplugin позволяет написать плагин один раз и запустить его в Vite, Rollup, webpack и esbuild. Именно это делает модульные JavaScript-инструменты действительно портативными между различными инструментами сборки.

unbuild — сборщик библиотек

unbuild — это сборщик для JavaScript-библиотек без конфигурации, построенный на Rollup. Он обрабатывает вывод ESM и CJS, декларации типов и сборку с минимальной настройкой — идеален для публикации пакетов.

unimport — утилиты для авто-импорта

unimport предоставляет инфраструктуру авто-импорта, используемую Nuxt и другими инструментами. Вы можете интегрировать её напрямую в любой проект на Vite или Rollup.

unenv — полифиллы для сред выполнения

unenv нормализует различия между средами выполнения Node.js и не-Node окружениями, предоставляя Node-совместимые полифиллы для других сред выполнения. Это ключевой строительный блок для портативного серверного кода.

Прямое использование UnJS

Большинство разработчиков сталкиваются с UnJS косвенно. Но эти пакеты публикуются независимо в npm и полностью пригодны для использования вне Nuxt или любого мета-фреймворка. Если вы создаёте сервер, CLI-инструмент, общую библиотеку или плагин для сборки, скорее всего, есть пакет UnJS, который обрабатывает инфраструктуру, чтобы вам не пришлось этого делать.

Заключение

Экосистема UnJS не будет указывать вам, какой фреймворк использовать. В этом и суть. Она предоставляет вам хорошо протестированные, TypeScript-ориентированные строительные блоки и оставляет архитектурные решения за вами. Работаете ли вы с Nuxt, создаёте автономный сервер с Nitro и h3 или публикуете собственную библиотеку с unbuild, UnJS предоставляет портативную, компонуемую основу, которая сохраняет гибкость ваших инструментов и открытость ваших возможностей.

Часто задаваемые вопросы

Да. Каждый пакет UnJS публикуется независимо в npm и разработан для автономной работы. Вы можете установить и использовать такие инструменты, как h3, ofetch или unbuild в любом JavaScript или TypeScript проекте без Nuxt или любого другого мета-фреймворка.

Пакеты UnJS созданы для работы в Node.js, Deno, Bun и edge-средах выполнения, таких как Cloudflare Workers и Vercel Edge Functions. Пакет unenv специально обрабатывает полифиллинг различий между средами выполнения, чтобы ваш код оставался портативным.

unplugin предоставляет унифицированный API, который позволяет написать один плагин и запустить его в Vite, Rollup, webpack и esbuild. Вместо поддержки отдельных реализаций плагинов для каждого инструмента сборки, вы пишете один раз, а unplugin обрабатывает адаптерный слой.

ofetch выполняет аналогичную роль, но более лёгкий и современный. Он оборачивает нативный fetch API с разумными настройками по умолчанию, такими как автоматический парсинг JSON, логика повторных попыток и перехватчики. Он работает во всех средах выполнения без дополнительных полифиллов, что делает его практичной альтернативой для большинства случаев использования.

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