服务器引擎
Nuxt 由一个新的服务器引擎驱动:Nitro。
在构建 Nuxt 的过程中,我们创建了一个新的服务器引擎:Nitro。
它内置了许多功能:
- 跨平台支持 Node.js、浏览器、服务工作者等。
- 开箱即用的无服务器支持。
- API 路由支持。
- 自动代码分割和异步加载块。
- 静态 + 无服务器网站的混合模式。
- 带热模块重载的开发服务器。
API 层
Nitro 添加了服务器 API 端点 和 中间件,内部使用 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 start
(使用 nuxt-start
或 nuxt
分发包)或自定义编程方式涉及 Nuxt 核心部分,这在无服务器和服务工作者环境中脆弱且容易出错。
Nuxt 在运行 nuxt build
时生成此分发包,输出到 .output
目录。
该输出包含运行时代码,可在任何环境中(包括实验性的浏览器服务工作者!)运行你的 Nuxt 服务器并提供静态文件,使其成为真正的 JAMstack 混合框架。此外,Nuxt 实现了原生存储层,支持多源驱动和本地资产。