title: 与 SvelteKit 集成 - ElysiaJS head: - - meta - property: 'og:title' content: 与 SvelteKit 集成 - ElysiaJS
- - meta
- name: 'description'
content: 使用 SvelteKit,您可以在服务器路由上运行 Elysia。
- - meta
- property: 'og:description'
content: 使用 SvelteKit,您可以在服务器路由上运行 Elysia。
与 SvelteKit 集成
使用 SvelteKit,您可以在服务器路由上运行 Elysia。
- 创建 src/routes/[...slugs]/+server.ts。
- 定义一个 Elysia 服务器。
- 导出一个调用
app.handle的 fallback 函数。
typescript
// src/routes/[...slugs]/+server.ts
import { Elysia, t } from 'elysia';
const app = new Elysia()
.get('/', 'hello SvelteKit')
.post('/', ({ body }) => body, {
body: t.Object({
name: t.String()
})
})
interface WithRequest {
request: Request
}
export const fallback = ({ request }: WithRequest) => app.handle(request) 您可以将 Elysia 服务器视为普通的 SvelteKit 服务器路由。
前缀
如果您将 Elysia 服务器放置在应用路由器的非根目录中,您需要为 Elysia 服务器添加前缀注释。
例如,如果您将 Elysia 服务器放在 src/routes/api/[...slugs]/+server.ts 中,您需要为 Elysia 服务器将前缀注释为 /api。
typescript
// src/routes/api/[...slugs]/+server.ts
import { Elysia, t } from 'elysia';
const app = new Elysia({ prefix: '/api' })
.get('/', () => 'hi')
.post('/', ({ body }) => body, {
body: t.Object({
name: t.String()
})
})
type RequestHandler = (v: { request: Request }) => Response | Promise<Response>
export const fallback: RequestHandler = ({ request }) => app.handle(request)这将确保 Elysia 路由在任何您放置它的位置都能正常工作。
请参考 SvelteKit 路由 获取更多信息。