Сервер

[object Object]
Узнать больше Docs > 4 X > Directory Structure > Server.

На базе Nitro

Сервер Nuxt — это Nitro. Изначально он создавался для Nuxt, сейчас входит в UnJS и может использоваться другими фреймворками или отдельно.

Nitro даёт Nuxt ряд возможностей:

  • Полный контроль серверной части приложения
  • Универсальное развёртывание у любого провайдера (часто без конфигурации)
  • Гибридный рендеринг

Внутри Nitro использует h3 — минималистичный HTTP-фреймворк с высокой производительностью и переносимостью.

API и middleware

Серверную часть Nuxt (API и middleware) можно описывать единообразно:

server/api/test.ts
export default defineEventHandler(async (event) => {
  // ... Ваша логика
})

Возвращать можно text, json, html или даже stream.

Как и в остальном Nuxt, поддерживаются hot module replacement и автоимпорт.

Узнать больше Docs > 4 X > Directory Structure > Server.

Универсальное развёртывание

Nitro позволяет развернуть Nuxt где угодно — от bare metal до edge, с запуском за миллисекунды.

Узнать больше Blog > Nuxt On The Edge.

Доступно более 15 пресетов под разные облака и серверы, в том числе:

И под другие рантаймы:

Deno

Bun

Узнать больше Docs > 4 X > Getting Started > Deployment.

Гибридный рендеринг

В Nitro есть механизм routeRules: для каждого маршрута можно задать правила рендеринга и не только.

nuxt.config.ts
export default defineNuxtConfig({
  routeRules: {
    // Генерируется при сборке для SEO
    '/': { prerender: true },
    // Кэш на 1 час
    '/api/*': { cache: { maxAge: 60 * 60 } },
    // Редирект вместо 404
    '/old-page': {
      redirect: { to: '/new-page', statusCode: 302 },
    },
    // ...
  },
})
Подробнее о правилах маршрутов и режимах рендеринга.

Часть правил (ssr, appMiddleware, noScripts) относится к Nuxt и меняет поведение при рендере страниц в HTML.

Некоторые правила (appMiddleware, redirect, prerender) влияют и на клиентское поведение.

Nitro используется и для серверного рендеринга, и для пререндеринга.

Узнать больше Docs > 4 X > Guide > Concepts > Rendering.