生命周期

了解 Nitro 如何运行并处理传入到您的应用的请求。
Nitro v3 Alpha 文档仍在开发中 — 期待更新、不完善之处及偶尔的不准确。

请求可以从以下任一层被拦截并终止(可带响应,也可不带响应),顺序如下:

路由规则

Nitro 配置中定义的匹配路由规则将被执行。请注意,大多数路由规则可以修改响应而不终止(例如,添加一个响应头)。

nitro.config.ts
import { defineNitroConfig } from "nitro/config";

export default defineNitroConfig({
  routeRules: {
    '/**': { headers: { 'x-nitro': 'first' } }
  }
})
Read more in 路由 > 路由规则.

全局中间件

定义在 middleware/ 目录下的任何全局中间件都会运行:

middleware/info.ts
import { defineHandler } from "nitro/h3";

export default defineHandler((event) => {
  event.context.info = { name: "Nitro" };
});
中间件中返回响应将关闭该请求,应尽量避免。
了解更多关于 Nitro 中间件。

服务器入口

如果定义了服务器入口处理器,则将运行:

server.ts
import { defineHandler } from "nitro/h3";

export default defineHandler((event) => {
  if (event.path === "/") {
    return "主页";
  }
});
可将服务器入口视为最后运行的全局中间件。
了解更多关于 Nitro 服务器入口。

路由

此阶段,Nitro 会检查 routes/ 文件夹中定义的路由以匹配传入请求。

routes/api/hello.ts
export default (event) => ({ world: true })
了解更多关于 Nitro 文件系统路由。

渲染器

如果没有匹配路由,Nitro 会寻找渲染器处理器(已定义或自动检测)来处理请求。

了解更多关于 Nitro 渲染器。