服务器引擎

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

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

它带来了许多功能:

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

API 层

Nitro 添加了服务器 API 端点中间件,内部使用了 h3

主要特性包括:

  • 处理程序可以直接返回对象/数组,以实现自动处理的 JSON 响应
  • 处理程序可以返回 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 引擎的信息。