挂载
WinterTC 是一个用于构建 Cloudflare、Deno、Vercel 等平台背后 HTTP 服务器的标准。
它允许 Web 服务器通过使用 Request 和 Response 在不同运行时之间互操作运行。
Elysia 符合 WinterTC。针对 Bun 进行了优化,但也支持其他可能的运行时。
这允许任何符合 WinterCG 的框架或代码一起运行,从而使 Elysia、Hono、Remix、Itty Router 等框架能够在简单函数中一起运行。
挂载
要使用 .mount,只需传递一个 fetch 函数:
ts
import { Elysia } from 'elysia'
import { Hono } from 'hono'
const hono = new Hono()
.get('/', (c) => c.text('Hello from Hono!'))
const app = new Elysia()
.get('/', () => 'Hello from Elysia')
.mount('/hono', hono.fetch)任何使用 Request 和 Response 的框架都可以与 Elysia 互操作,例如:
这些框架可以在多个运行时中使用,例如:
- Bun
- Deno
- Vercel Edge Runtime
- Cloudflare Worker
- Netlify Edge Function
如果框架支持 .mount 函数,您也可以在另一个框架中挂载 Elysia:
ts
import { Elysia } from 'elysia'
import { Hono } from 'hono'
const elysia = new Elysia()
.get('/', () => 'Hello from Elysia inside Hono inside Elysia')
const hono = new Hono()
.get('/', (c) => c.text('Hello from Hono!'))
.mount('/elysia', elysia.fetch)
const main = new Elysia()
.get('/', () => 'Hello from Elysia')
.mount('/hono', hono.fetch)
.listen(3000)复用 Elysia
此外,您可以在服务器上复用多个现有的 Elysia 项目。
ts
import { Elysia } from 'elysia'
import A from 'project-a/elysia'
import B from 'project-b/elysia'
import C from 'project-c/elysia'
new Elysia()
.mount(A)
.mount(B)
.mount(C)如果传递给 mount 的实例是 Elysia 实例,它将自动使用 use 解析,从而默认提供类型安全性和 Eden 支持。
这使得互操作框架和运行时的可能性成为现实。