服务器引擎
Nuxt 由一个全新的服务器引擎提供支持:Nitro。
在构建 Nuxt 的过程中,我们创建了一个新的服务器引擎Nitro.
它自带了许多特性
- 支持 Node.js、浏览器、Service Workers 等跨平台环境。
- 开箱即用的无服务器(Serverless)支持。
- 支持 API 路由。
- 自动代码分割和异步加载块 (chunks)。
- 支持静态 + 无服务器站点的混合模式。
- 具有热模块替换 (HMR) 功能的开发服务器。
API 层
服务器 API 端点 和 中间件 由 Nitro 添加,其内部使用了h3.
主要特性包括
- 处理程序可以直接返回对象/数组,以实现自动处理的 JSON 响应
- 处理程序可以返回 Promise,这些 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发行版)或自定义程序化使用,这种方式非常脆弱且容易损坏,不适合无服务器和 Service Worker 环境。
当运行 nuxt build 时,Nuxt 会将结果生成到 .output 目录中。
该输出包含在任何环境中(包括实验性的浏览器 Service Workers!)运行 Nuxt 服务器并提供静态文件的运行时代码,使其成为 JAMstack 的真正混合框架。此外,Nuxt 还实现了一个原生存储层,支持多源驱动程序和本地资源。