Серверный движок
При разработке Nuxt 3 мы создали новый серверный движок: Nitro.
Он поставляется со многими функциями:
- Кроссплатформенная поддержка Node.js, браузеров, сервис-воркеров и многого другого.
- Поддержка Serverless из коробки.
- Поддержка маршрутов API.
- Автоматический код-сплиттинг и асинхронно загружаемые чанки.
- Гибридный режим для статических + serverless сайтов.
- Девелопмент-сервер с горячей перезагрузкой модулей (HMR).
Слой API
Серверные эндпоинты API и middleware добавляются Nitro, который внутри использует h3.
Ключевые особенности:
- Обработчики могут напрямую возвращать объекты/массивы для автоматически обработанного ответа JSON
- Обработчики могут возвращать промисы, которые будут ожидаться (также поддерживаются
res.end()
иnext()
). - Вспомогательные функции для парсинга body, обработки файлов cookie, перенаправлений, заголовков и многого другого
Для получения дополнительной информации ознакомьтесь с документацией h3.
Прямые вызовы API
Nitro позволяет «прямой» вызов роутов через глобально доступный хелпер $fetch
. Это сделает вызов API на сервер, если запустить его в браузере, но напрямую вызовет соответствующую функцию, если запустить его на сервере, экономя дополнительный вызов API.
$fetch
API использует ofetch, основные функции которого включают:
- Автоматический разбор ответов JSON (с доступом к необработанному ответу при необходимости)
- Автоматическую обработку тела и параметров запроса, с правильными заголовками
Content-Type
Дополнительную информацию о возможностях $fetch
можно найти на ofetch.
Типизированные маршруты API
При использовании маршрутов API (или middleware), Nitro будет генерировать типизацию для этих маршрутов, если вы возвращаете значение вместо использования res.end()
для отправки ответа.
Вы можете получить доступ к этим типам с помощью $fetch()
или useFetch()
.
Автономный сервер
Nitro создает автономный серверный дистрибутив, который не зависит от node_modules
.
Сервер в Nuxt 2 не является автономным и требует задействования части ядра Nuxt путем запуска nuxt start
(с дистрибутивами nuxt-start
или nuxt
) или пользовательского программного использования, что является хрупким, подвержено сбоям и не подходит для serverless и service-worker окружений.
Nuxt генерирует этот дистрибутив при запуске nuxt build
в директории .output
.
На выходе получается runtime-код для запуска вашего сервера Nuxt в любой среде (включая экспериментальные браузерные сервис-воркеры!) и обслуживания ваших статических файлов, что делает его настоящим гибридным фреймворком для JAMstack. Кроме того, Nuxt реализует собственный уровень хранения, поддерживая драйверы с несколькими источниками и локальные ассеты.