生命周期
了解 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.ts
import { defineHandler } from "nitro/h3";
export default defineHandler((event) => {
if (event.path === "/") {
return "主页";
}
});
可将服务器入口视为最后运行的全局中间件。
路由
此阶段,Nitro 会检查 routes/ 文件夹中定义的路由以匹配传入请求。
routes/api/hello.ts
export default (event) => ({ world: true })
渲染器
如果没有匹配路由,Nitro 会寻找渲染器处理器(已定义或自动检测)来处理请求。