Skip to content
Our Sponsors
Open in Anthropic

挂载

WinterTC 是一个用于构建 Cloudflare、Deno、Vercel 等平台背后 HTTP 服务器的标准。

它允许 Web 服务器通过使用 RequestResponse 在不同运行时之间互操作运行。

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)

任何使用 RequestResponse 的框架都可以与 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 支持。

这使得互操作框架和运行时的可能性成为现实。