使用自定义插件扩展 Nitro,用于钩子和生命周期事件。
server/plugins/test.ts
import { definePlugin } from "nitro";
import { useNitroHooks } from "nitro/app";
export default definePlugin((nitroApp) => {
const hooks = useNitroHooks();
hooks.hook("response", (event) => {
event.headers.set("content-type", "html; charset=utf-8");
});
});
插件让你能够接入 Nitro 的运行时生命周期。本示例展示了一个插件,它在每个响应上修改 Content-Type 标头。在 server/plugins/ 中创建文件,它们将在启动时自动加载。
定义插件
server/plugins/test.ts
import { definePlugin } from "nitro";
import { useNitroHooks } from "nitro/app";
export default definePlugin((nitroApp) => {
const hooks = useNitroHooks();
hooks.hook("response", (event) => {
event.headers.set("content-type", "html; charset=utf-8");
});
});
该插件使用 useNitroHooks() 来访问钩子系统,然后注册一个在每次请求后运行的 response 钩子。这里它将内容类型设置为 HTML,但你可以记录请求、添加安全标头或以任何方式修改响应。
主处理器
server.ts
import { eventHandler } from "h3";
export default eventHandler(() => "<h1>Hello Nitro!</h1>");
该处理器返回 HTML 而不设置内容类型。插件会自动将正确的 Content-Type: html; charset=utf-8 标头添加到响应中。