Nuxt3 中文课程 《实战全栈开发简书》.

服务器引擎

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

在开发Nuxt 3时,我们创建了一款新的服务器引擎:Nitro

它具备以下特性:

  • 跨平台支持,可用于Node.js、浏览器、service-workers等。
  • 原生支持无服务器架构。
  • 支持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核心的一部分,这种方式容易出错,不适用于无服务器和service-worker环境。

当运行nuxt build时,Nuxt 3会将其生成到一个名为.output的目录中。

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

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