在构建 Nuxt 的过程中,我们创建了一个全新的服务器引擎:Nitro。
它内置了许多功能:
服务器的 API 端点 和 中间件 由 Nitro 提供,内部使用了 h3。
主要功能包括:
res.end() 和 next())更多信息,请查看 h3 文档。
Nitro 允许通过全局可用的 $fetch 辅助函数“直接”调用路由。如果在浏览器中运行,会发起 API 调用;如果在服务器中运行,则会直接调用对应函数,省去一次额外的 API 请求。
Content-Type 头关于 $fetch 的更多功能,请参考 ofetch。
当使用 API 路由(或中间件)时,只要你返回一个值而不是用 res.end() 发送响应,Nitro 会为这些路由生成类型声明。
使用 $fetch() 或 useFetch() 时,可访问这些类型信息。
Nitro 会生成一个独立的服务器构建产物,该产物不依赖于 node_modules。
Nuxt 2 中的服务器不是独立的,必须借助 Nuxt 核心模块(通过 nuxt start 命令,使用 nuxt-start 或 nuxt 包),或通过自定义编程方式运行,这种方式脆弱且易出错,不适用于无服务器和 Service Worker 环境。
Nuxt 在运行 nuxt build 时会生成这个构建产物,输出到 .output 目录中。
输出中包含用于在任意环境(包括实验性的浏览器 Service Worker)中运行 Nuxt 服务器的运行时代码,并可提供静态文件服务,使其成为真正的 JAMstack 混合框架。此外,Nuxt 实现了原生存储层,支持多来源驱动和本地资源。