服务器引擎 Server Engine

Nuxt 3 由一个新的服务器引擎 [Nitro](/docs/nitro/) 提供支持。

  • 对 Node.js、浏览器、服务工作者等的跨平台支持。
  • 开箱即用的无服务器支持。
  • API 路由支持。
  • 自动代码分割和异步加载块。
  • 静态+无服务器站点的混合模式。
  • 具有热模块重新加载的开发服务器。

API Layer

服务器 API 端点中间件 由内部使用 h3

主要特点包括:

  • 处理程序可以直接返回对象/数组以获得自动处理的 JSON 响应
  • 处理程序可以返回将被等待的承诺(也支持 res.end()next())
  • 用于正文解析、cookie 处理、重定向、标头等的辅助函数

查看 h3 文档 了解更多信息。

server/ 目录中了解有关 API 层的更多信息。

直接 API 调用

Nitro 允许通过全局可用的$fetch助手“直接”调用路由。 如果在浏览器上运行,这将对服务器进行 API 调用,但如果在服务器上运行,将直接调用相关函数,节省额外的 API 调用

$fetch API 使用 ofetch,主要功能包括:

  • 自动解析 JSON 响应(如果需要,可以访问原始响应)
  • 请求正文和参数自动处理,带有正确的Content-Type标头

有关$fetch功能的更多信息,请查看 ofetch

类型化的 API 路由

使用 API 路由(或中间件)时,只要您返回值而不是使用 res.end() 发送响应,Nitro 就会为这些路由生成类型。

您可以在使用 $fetch()useFetch() 时访问这些类型。

独立服务器

Nitro 生成独立于 node_modules 的独立服务器 dist。

Nuxt 2 中的服务器不是独立的,需要通过运行 nuxt start 来参与 Nuxt 核心的一部分(使用 nuxt-startnuxt 发行版)或自定义程序化使用,它很脆弱且容易损坏,不适合无服务器和服务工作者环境。

Nuxt 3 在将 nuxt build 运行到 .output 目录时生成此 dist。

输出包含运行时代码,用于在任何环境(包括实验性浏览器服务工作者!)中运行您的 Nuxt 服务器并提供您的静态文件,使其成为 JAMstack 的真正混合框架。 此外,Nuxt 实现了原生存储层,支持多源驱动和本地资产。

Check out the Nitro engine on GitHub: unjs/nitro.