服务器引擎

Nuxt 由一种新的服务器引擎 Nitro 驱动。

在构建 Nuxt 3 的过程中,我们创建了一个新的服务器引擎:Nitro

它附带了许多功能:

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

API 层

服务器 API 端点中间件 是由 Nitro 添加的,它内部使用 h3

关键功能包括:

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

查看 h3 文档 获取更多信息。

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

直接 API 调用

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

$fetch API 使用 ofetch,关键功能包括:

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

有关 $fetch 特性的更多信息,请查看 ofetch

类型化的 API 路由

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

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

独立服务器

Nitro 产生一个独立的服务器分发,它独立于 node_modules

Nuxt 2 中的服务器不是独立的,它需要 Nuxt 核心的一部分参与运行 nuxt start(与 nuxt-startnuxt 分发)或自定义编程式使用,这很脆弱,容易出现故障,不适合无服务器和服务工作线程环境。

Nuxt 在运行 nuxt build 时生成这个分发到 .output 目录。

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

在 GitHub 上了解更多关于 Nitro 引擎的信息。