服务端引擎

Nuxt 由全新的服务端引擎 Nitro 驱动。

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

它具备诸多特性:

  • 跨平台支持 Node.js、浏览器、Service Workers 等环境
  • 开箱即用的 Serverless 支持
  • API 路由支持
  • 自动代码分割和异步加载模块
  • 静态+Serverless 站点的混合模式
  • 支持热模块替换的开发服务器

API 层

Nitro 内部使用 h3 来支持服务端 API 端点中间件

主要特性包括:

  • 处理器可以直接返回对象/数组,会自动处理为 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 核心部分,这种方式较为脆弱且容易出错,不适合 Serverless 和 Service Worker 环境。

Nuxt 在运行 nuxt build 时会生成这个构建产物到 .output 目录。

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

在 GitHub 上阅读更多关于 Nitro 引擎的信息。