生命周期
了解 Nitro 如何运行并为你的应用程序提供传入请求。
Nitro v3 Alpha 文档仍在开发中——可能会有更新、不完善的地方和偶尔的不准确信息。
请求可以按以下顺序从任何这些层拦截和终止(有或没有响应):
路由规则
在 Nitro 配置中定义的匹配路由规则将执行。请注意,大多数路由规则可以在不终止请求的情况下更改响应(例如,添加头)。
nitro.config.ts
import { defineNitroConfig } from "nitro/config";
export default defineNitroConfig({
routeRules: {
'/**': { headers: { 'x-nitro': 'first' } }
}
})
全局中间件
在 middleware/ 目录中定义的任何全局中间件都将运行:
middleware/info.ts
import { defineHandler } from "nitro/h3";
export default defineHandler((event) => {
event.context.info = { name: "Nitro" };
});
从中间件返回将关闭请求,应尽可能避免。
Server entry
如果定义了,server entry handler 将运行:
server.ts
import { defineHandler } from "nitro/h3";
export default defineHandler((event) => {
if (event.path === "/") {
return "Home page";
}
});
将 server entry 视为要运行的最后一个全局中间件。
路由
在此阶段,Nitro 将查看 routes/ 文件夹中定义的路由以匹配传入请求。
routes/api/hello.ts
export default (event) => ({ world: true })
Renderer
如果没有匹配的路由,Nitro 将查找 renderer handler(已定义或自动检测)来处理请求。