服务器引擎
Nuxt 由新的服务器引擎驱动:Nitro。
在构建 Nuxt 3 时,我们创建了一个新的服务器引擎:Nitro。
它附带了许多功能
- 对 Node.js、浏览器、服务工作线程等的跨平台支持。
- 开箱即用的 Serverless 支持。
- API 路由支持。
- 自动代码拆分和异步加载的块。
- 静态 + serverless 站点的混合模式。
- 带有热模块重载的开发服务器。
API 层
服务器 API 端点 和 中间件 由 Nitro 添加,Nitro 在内部使用 h3。
主要功能包括
- 处理程序可以直接返回对象/数组,以实现自动处理的 JSON 响应
- 处理程序可以返回 promises,promises 将被等待(也支持
res.end()
和next()
) - 用于正文解析、cookie 处理、重定向、标头等的辅助函数
查看 h3 文档 以获取更多信息。
直接 API 调用
Nitro 允许通过全局可用的 $fetch
助手“直接”调用路由。如果在浏览器上运行,这将向服务器发出 API 调用,但如果在服务器上运行,将直接调用相关函数,从而节省额外的 API 调用。
$fetch
API 正在使用 ofetch,其主要功能包括
- 自动解析 JSON 响应(如果需要,可以访问原始响应)
- 自动处理请求正文和参数,并使用正确的
Content-Type
标头
有关 $fetch
功能的更多信息,请查看 ofetch。
类型化的 API 路由
使用 API 路由(或中间件)时,只要您返回一个值而不是使用 res.end()
发送响应,Nitro 就会为这些路由生成类型。
当使用 $fetch()
或 useFetch()
时,您可以访问这些类型。
独立服务器
Nitro 生成一个独立的服务器 dist,它独立于 node_modules
。
Nuxt 2 中的服务器不是独立的,需要 Nuxt 核心的一部分参与,通过运行 nuxt start
(使用 nuxt-start
或 nuxt
发行版)或自定义编程用法,这很脆弱且容易损坏,不适合 serverless 和 service worker 环境。
当运行 nuxt build
到 .output
目录时,Nuxt 会生成此 dist。
输出包含运行时代码,用于在任何环境(包括实验性浏览器服务工作线程!)中运行您的 Nuxt 服务器并提供您的静态文件,使其成为 JAMstack 的真正混合框架。此外,Nuxt 实现了原生存储层,支持多源驱动程序和本地资产。