Nuxt3 中文课程 《实战全栈开发简书》.

服务器

从单一代码库中构建全栈应用程序,从数据库获取数据,创建API,甚至生成静态的服务器端内容,如站点地图或RSS订阅源。

Nuxt的服务器框架允许你构建全栈应用程序。例如,你可以从数据库或其他服务器获取数据,创建API,甚至生成静态的服务器端内容,如站点地图或RSS订阅源 - 一切都可以从单一代码库中完成。

Read more in Docs > Guide > Directory Structure > Server.

由Nitro驱动

Nuxt的服务器使用的是Nitro。Nitro最初是为Nuxt创建的,但现在是UnJS的一部分,也被其他框架使用 - 甚至可以单独使用。

使用Nitro给予Nuxt超能力:

  • 对应用程序的服务器端部分拥有完全控制权
  • 在任何提供者上进行通用部署(许多无需配置)
  • 混合渲染

对应用程序的服务器端部分拥有完全控制权

使用Nitro,你可以轻松管理Nuxt应用程序的服务器部分,从API端点到中间件。

端点和中间件可以像这样定义:

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

你可以直接返回textjsonhtml甚至stream

Nitro默认支持热模块替换自动导入,就像Nuxt应用程序的其他部分一样。

Read more in Docs > Guide > Directory Structure > Server.

通用部署

Nitro提供了在任何地方部署Nuxt应用程序的能力,从裸机服务器到边缘网络,启动时间仅为几毫秒。速度非常快!

Read more in Blog > Nuxt On The Edge.

如今,Nitro提供了15多个预设,用于为不同的云提供商和服务器构建Nuxt应用程序,包括:

或者针对其他运行时:

Deno

Bun

Read more in Docs > Getting Started > Deployment.

混合渲染

你的Nuxt应用程序是否需要静态和动态页面?Nitro为你提供支持!

Nitro有一个强大的功能叫做routeRules,它允许你定义一组规则来自定义Nuxt应用程序的每个路由的渲染方式(以及更多)。

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 }
    }
    // ...
  }
})
了解所有可用的路由规则,以自定义你的路由的渲染模式。

此外,还有一些路由规则(例如ssrexperimentalNoScripts)不是Nuxt特定的,用于改变渲染页面为HTML时的行为。

一些路由规则(redirectprerender)也会影响客户端行为。

Nitro用于构建具有服务器端渲染和预渲染功能的应用程序。

Read more in Docs > Guide > Concepts > Rendering.