Elysia a Eden: Kompletní typová bezpečnost od začátku do konce pro Bun

Elysia je Bun-nativní webový framework s výkonovými čísly, která dělají většinu Node.js frameworků pomalými. Eden ti dává tRPC-style klientskou typovou bezpečnost s menší konfigurací – a můžeš přinést Zod, Valibot nebo jakýkoliv Standard Schema validátor.

·3 min čtení

Elysia je TypeScript webový framework postavený speciálně pro Bun. Je rychlý způsobem, který se liší od “rychlý pro JavaScript framework” – benchmarkové čísla ho staví před Fastify, Hono a většinu ostatních Node.js alternativ o výrazný rozdíl, protože neběží na Node.js.

Eden je průvodní klientská knihovna Elysia. Dává ti kompletní typovou bezpečnost od konce ke konci mezi tvým Elysia serverem a jakýmkoliv TypeScript klientem – podobně jako to, co tRPC dělá pro Node.js ekosystém, ale s podstatně menším nastavením.

Minimální Elysia server

import { Elysia } from 'elysia'
import { z } from 'zod'

const CreatePostSchema = z.object({
  title: z.string().min(1),
  content: z.string(),
})

const app = new Elysia()
  .get('/hello', () => 'Hello from Elysia')
  .post('/posts', ({ body }) => createPost(body), {
    body: CreatePostSchema,
  })
  .listen(3000)

export type App = typeof app

Elysia podporuje validátory Standard Schema – Zod, Valibot, ArkType a TypeBox všechny fungují. Exportovaný typeof app je to, co Eden používá k odvozování typů na klientovi. Žádný samostatný soubor typů, žádné generování kódu.

Eden na klientovi

import { treaty } from '@elysiajs/eden'
import type { App } from './server'

const api = treaty<App>('http://localhost:3000')

// Plně typizované – nejsou potřeba žádné typové anotace
const { data, error } = await api.hello.get()
const { data: post } = await api.posts.post({
  title: 'Hello World',
  content: 'Můj první příspěvek',
})

post je typizován jako to, co tvůj server vrací. title a content jsou validovány proti schématu – TypeScript ohlásí chybu, pokud vynecháš povinné pole nebo předáš špatný typ. Typy přicházejí přímo z typeof app serveru, bez samostatného souboru schématu k samostatnému udržování a bez kroku generování kódu ke spuštění.

Jak se to porovnává s tRPC

AspekttRPCElysia + Eden
RuntimeNode.js / EdgeBun (primárně)
NastaveníRouter + adaptér + providerStačí exportovat typeof app
Klientská volánítrpc.posts.create.mutate({})api.posts.post({})
ValidaceZod/Valibot (externí)Zod, Valibot, ArkType, TypeBox
REST-kompatibilníNeAno
VýkonNode-vázanýBun-nativní
Vyspělost ekosystémuVelmi vyspělýRychle roste

tRPC má větší ekosystém a více komunitních zdrojů, což záleží pro komplexní projekty nebo týmy neznalé Elysia. Eden je jednodušší nastavit a v praxi rychlejší, pokud již používáš Bun.

Výkonová čísla

Elysia konzistentně patří mezi nejvýkonnější JavaScript/TypeScript webové frameworky v benchmarkových suitách. Čísla se liší podle designu benchmarku, ale vzor je konzistentní:

Požadavky/sec (přibližně, liší se podle benchmarku):
┌──────────────────┬─────────────┐
│ Elysia (Bun)     │  ~250,000+  │
│ Hono (Bun)       │  ~200,000+  │
│ Fastify (Node)   │  ~80,000    │
│ Express (Node)   │  ~40,000    │
└──────────────────┴─────────────┘

Mezera mezi Bun-nativními frameworky a Node.js frameworky není primárně o kódu frameworku – je o runtime. Bunovo HTTP zpracování je implementováno v Zig na systémové úrovni místo v JavaScriptu.

Kdy zvolit Elysia

Nový TypeScript backend na Bun: Elysia. DX je čistý, výkon je lepší než cokoliv na Node, a Eden zabíjí problém synchronizace typů bez veškeré tRPC ceremoničnosti.

Potřeba běžet na Node nebo Edge: Hono je nejbližší ekvivalent – podobné zřetězené API, širší podpora runtime, mírně méně těsná klientská integrace.

Existující tRPC projekt: nestojí za migraci. Pro cokoliv nového na Bun je to můj výchozí bod.