服务器引擎
Nuxt 由一个全新的服务器引擎提供支持:Nitro。
在构建 Nuxt 的过程中,我们创建了一个全新的服务器引擎:Nitro。
它内置了许多功能:
- 支持 Node.js、浏览器、Service Worker 及更多平台的跨平台支持。
- 开箱即用的无服务器支持。
- 支持 API 路由。
- 自动代码拆分和异步加载的代码块。
- 用于静态与无服务器站点的混合模式。
- 带有热模块重载的开发服务器。
API 层
服务器的 API 端点 和 中间件 由 Nitro 提供,内部使用了 h3。
主要功能包括:
- 处理器可以直接返回对象/数组,自动生成 JSON 响应
- 处理器可以返回 Promise,会被自动等待(同时支持
res.end()
和next()
) - 提供请求体解析、Cookie 处理、重定向、请求头等辅助函数
更多信息,请查看 h3 文档。
直接 API 调用
Nitro 允许通过全局可用的 $fetch
辅助函数“直接”调用路由。如果在浏览器中运行,会发起 API 调用;如果在服务器中运行,则会直接调用对应函数,省去一次额外的 API 请求。
- 自动解析 JSON 响应(也可访问原始响应)
- 自动处理请求体和参数,设置正确的
Content-Type
头
关于 $fetch
的更多功能,请参考 ofetch。
类型化的 API 路由
当使用 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 实现了原生存储层,支持多来源驱动和本地资源。