Nuxt/docs/1.getting-started/8.server.md

3.5 KiB

title description navigation.icon
Server Build full-stack applications, fetch data from your database, create APIs, or even generate static server-side content like a sitemap or a RSS feed, from a single codebase. i-ph-computer-tower-duotone

Nuxt's server framework allows you to build full-stack applications. For example, you can fetch data from a database or another server, create an API or even generate static server-side content like a sitemap or an RSS feed - all from a single codebase.

:read-more{to="/docs/guide/directory-structure/server"}

Powered by Nitro

Nuxt's server is Nitro. Nitro was originally created for Nuxt but is now part of UnJS and used 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

Full control of the server-side part of your app

With Nitro, you can easily manage the server 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, Nitro 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"}

Today, Nitro offers 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

Do you need both static and dynamic pages in your Nuxt app? Nitro has your back!

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 and experimentalNoScripts) that are not Nuxt specific to change the behavior when rendering your pages to HTML.

Some route rules (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"}