SvelteKit 提供了几个 钩子 — 用于拦截和覆盖框架的默认行为。
最基本的钩子是 handle
,它位于 src/hooks.server.js
中。它接收一个 event
对象和一个 resolve
函数,并返回一个 Response
。
resolve
就是神奇之处:SvelteKit 将传入的请求 URL 与应用程序的路由匹配,导入相关代码(+page.server.js
和 +page.svelte
文件等),加载路由所需的数据,并生成响应。
默认的 handle
钩子如下所示:
src/hooks.server
export async function handle({ event, resolve }) {
return await resolve(event);
}
对于页面(相对于 API 路由),你可以使用 transformPageChunk
修改生成的 HTML:
src/hooks.server
export async function handle({ event, resolve }) {
return await resolve(event, {
transformPageChunk: ({ html }) => html.replace(
'<body',
'<body style="color: hotpink"'
)
});
}
你还可以创建全新的路由:
src/hooks.server
export async function handle({ event, resolve }) {
if (event.url.pathname === '/ping') {
return new Response('pong');
}
return await resolve(event, {
transformPageChunk: ({ html }) => html.replace(
'<body',
'<body style="color: hotpink"'
)
});
}
上一页 下一页
1
2
<h1>hello world</h1>
<a href="/ping">ping</a>