3.6 KiB
title | description | navigation.icon |
---|---|---|
Server | Build full-stack applications with Nuxt's server framework. You can fetch data from your database or another server, create APIs, or even generate static server-side content like a sitemap or a RSS feed - all from a single codebase. | i-ph-computer-tower-duotone |
:read-more{to="/docs/guide/directory-structure/server"}
Powered by Nitro
Nuxt's server is Nitro. It was originally created for Nuxt but is now part of UnJS and open for other frameworks - and can even be used on its own.
Using Nitro gives Nuxt superpowers:
- Full control of the server-side part of your app
- Universal deployment on any provider (many zero-config)
- Hybrid rendering
Nitro is internally using h3, a minimal H(TTP) framework built for high performance and portability.
::tip{icon="i-ph-video-duotone" to="https://www.youtube.com/watch?v=DkvgJa-X31k" target="_blank"} Watch a video from Alexander Lichter to understand the responsibilities of Nuxt and Nitro in your application. ::
Server Endpoints & Middleware
You can easily manage the server-only part of your Nuxt app, from API endpoints to middleware.
Both endpoints and middleware can be defined like this:
export default defineEventHandler(async (event) => {
// ... Do whatever you want here
})
And you can directly return text
, json
, html
or even a stream
.
Out-of-the-box, it supports hot module replacement and auto-import like the other parts of your Nuxt application.
:read-more{to="/docs/guide/directory-structure/server"}
Universal Deployment
Nitro offers the ability to deploy your Nuxt app anywhere, from a bare metal server to the edge network, with a start time of just a few milliseconds. That's fast!
:read-more{to="/blog/nuxt-on-the-edge"}
There are more than 15 presets to build your Nuxt app for different cloud providers and servers, including:
Or for other runtimes:
::card-group :card{icon="i-logos-deno" title="Deno" to="https://deno.land" target="_blank"} :card{icon="i-logos-bun" title="Bun" to="https://bun.sh" target="_blank"} ::
:read-more{to="/docs/getting-started/deployment"}
Hybrid Rendering
Nitro has a powerful feature called routeRules
which allows you to define a set of rules to customize how each route of your Nuxt app is rendered (and more).
export default defineNuxtConfig({
routeRules: {
// Generated at build time for SEO purpose
'/': { prerender: true },
// Cached for 1 hour
'/api/*': { cache: { maxAge: 60 * 60 } },
// Redirection to avoid 404
'/old-page': {
redirect: { to: '/new-page', statusCode: 302 }
}
// ...
}
})
::read-more{to="/docs/guide/concepts/rendering#hybrid-rendering"} Learn about all available route rules are available to customize the rendering mode of your routes. ::
In addition, there are some route rules (for example, ssr
, appMiddleware
, and experimentalNoScripts
) that are Nuxt specific to change the behavior when rendering your pages to HTML.
Some route rules (appMiddleware
, redirect
and prerender
) also affect client-side behavior.
Nitro is used to build the app for server side rendering, as well as pre-rendering.
:read-more{to="/docs/guide/concepts/rendering"}