服务端

用 Nuxt 的服务端框架构建全栈应用。你可以从数据库或其他服务器获取数据、创建 API,甚至生成静态服务端内容如站点地图或 RSS 订阅——全部在一个代码库中完成。

基于 Nitro 驱动

服务引擎

Nuxt 的服务端是 Nitro。它最初为 Nuxt 创建,现在是 UnJS 的一部分,也对其他框架开放——甚至可以独立使用。

使用 Nitro 让 Nuxt 获得超能力:

  • 完全控制应用的服务端部分
  • 通用部署到任何平台(很多零配置)
  • 混合渲染

Nitro 内部使用 h3,一个为高性能和可移植性构建的极简 H(TTP) 框架。

服务端接口与中间件

你可以轻松管理 Nuxt 应用的服务端部分,从 API 接口到中间件。

接口和中间件都可以这样定义:

export default defineEventHandler(async (event) => {
  // ... 在这里做任何你想做的事
})

你可以直接返回 text、json、html,甚至 stream。

开箱即用地支持热模块替换和自动导入,和 Nuxt 应用的其他部分一样。

通用部署

Nitro 让你可以把 Nuxt 应用部署到任何地方,从裸金属服务器到边缘网络,启动时间仅几毫秒。非常快!

有超过 15 种预设可以为不同的云平台和服务器构建 Nuxt 应用,包括:

或者其他运行时:

混合渲染

Nuxt 有一个强大的 routeRules 功能,允许你定义一组规则来自定义 Nuxt 应用每个路由的渲染方式(以及更多)。Nuxt 编译这些规则,默认的服务端构建器(Nitro)应用服务端规则。

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 用于构建服务端渲染应用,以及预渲染。