Lzh on GitHub

Server Engine

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

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

它附带了许多功能:

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

API 层

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

主要功能包括:

  • 处理程序可以直接返回对象/数组以自动处理 JSON 响应
  • 处理程序可以返回 promise,这些 promise 将被等待 (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 的独立服务器分发包。

Nuxt 2 中的服务器不是独立的,需要通过运行 nuxt start(使用 nuxt-startnuxt 分发包)或自定义编程方式来涉及 Nuxt 核心的一部分,这既脆弱又容易出错,并且不适用于无服务器和服务工作线程环境。

Nuxt 在运行 nuxt build 时将此分发包生成到 .output 目录中。

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

在 GitHub 上详细了解 Nitro 引擎。