---
title: "服务器引擎"
description: "Nuxt 由一个全新的服务器引擎提供支持：Nitro。"
canonical_url: "https://nuxt.zhcndoc.com/docs/3.x/guide/concepts/server-engine"
---
# 服务器引擎

> Nuxt 由一个全新的服务器引擎提供支持：Nitro。

在构建 Nuxt 的过程中，我们创建了一个全新的服务器引擎：[Nitro](https://nitro.zhcndoc.com/)。

它内置了许多功能：

- 支持 Node.js、浏览器、Service Worker 及更多平台的跨平台支持。
- 开箱即用的无服务器支持。
- 支持 API 路由。
- 自动代码拆分和异步加载的代码块。
- 用于静态与无服务器站点的混合模式。
- 带有热模块重载的开发服务器。

## API 层

Nitro 添加了服务器 [API 端点](https://nuxt.zhcndoc.com/docs/3.x/directory-structure/server#server-routes)和[中间件](https://nuxt.zhcndoc.com/docs/3.x/directory-structure/server#server-middleware)，其内部使用 [h3](https://github.com/h3js/h3)。

主要功能包括：

- 处理器可以直接返回对象/数组，自动生成 JSON 响应
- 处理器可以返回 Promise，会被自动等待（同时支持 `res.end()` 和 `next()`）
- 提供请求体解析、Cookie 处理、重定向、请求头等辅助函数

更多信息，请查看 [h3 文档](https://github.com/h3js/h3)。

::read-more{to="https://nuxt.zhcndoc.com/docs/3.x/directory-structure/server#server-routes"}
了解更多关于 `server/` 目录中 API 层的信息。
::

## 直接 API 调用

Nitro 允许通过全局可用的 [`$fetch`](https://nuxt.zhcndoc.com/docs/3.x/api/utils/dollarfetch) 辅助函数“直接”调用路由。如果在浏览器中运行，它会向服务器发起 API 调用；如果在服务器上运行，则会直接调用相关函数，**从而节省一次额外的 API 调用**。

[`$fetch`](https://nuxt.zhcndoc.com/docs/3.x/api/utils/dollarfetch) API 使用 [ofetch](https://github.com/unjs/ofetch)，其主要功能包括：

- 自动解析 JSON 响应（也可访问原始响应）
- 自动处理请求体和参数，设置正确的 `Content-Type` 头

关于 `$fetch` 的更多功能，请参考 [ofetch](https://github.com/unjs/ofetch)。

## 类型化的 API 路由

当使用 API 路由（或中间件）时，只要你返回一个值而不是用 `res.end()` 发送响应，Nitro 会为这些路由生成类型声明。

使用 [`$fetch()`](https://nuxt.zhcndoc.com/docs/3.x/api/utils/dollarfetch) 或 [`useFetch()`](https://nuxt.zhcndoc.com/docs/3.x/api/composables/use-fetch) 时，你可以访问这些类型。

## 独立服务器

Nitro 会生成一个独立的服务器构建产物，该产物不依赖于 `node_modules`。

Nuxt 2 中的服务器不是独立的，必须借助 Nuxt 核心模块（通过 `nuxt start` 命令，使用 [`nuxt-start`](https://www.npmjs.com/package/nuxt-start) 或 [`nuxt`](https://www.npmjs.com/package/nuxt) 包），或通过自定义编程方式运行，这种方式脆弱且易出错，不适用于无服务器和 Service Worker 环境。

运行 `nuxt build` 时，Nuxt 会将此构建产物生成到 [`.output`](https://nuxt.zhcndoc.com/docs/3.x/directory-structure/output) 目录中。

输出中包含用于在任意环境（包括实验性的浏览器 Service Worker）中运行 Nuxt 服务器的运行时代码，并可提供静态文件服务，使其成为真正的 JAMstack 混合框架。此外，Nuxt 实现了原生存储层，支持多来源驱动和本地资源。

::read-more{icon="i-simple-icons-github" to="https://github.com/nitrojs/nitro" target="_blank"}
在 GitHub 上阅读更多关于 Nitro 引擎的信息。
::


## Sitemap

See the full [sitemap](https://nuxt.zhcndoc.com/sitemap.md) for all pages.
