Wener Notes

elysia

约 1 分钟阅读
  • elysiajs/elysiaGitHubelysiajs/elysiaelysiajs/elysia · 基于 bun 的 Web 框架 · 使用 @sinclair/typebox · 代码量很少,逻辑简单 · AOT · 生成代码来进行 route · route 变成一个大 switch · 与 hono 非常相似,但面向 bun 为主笔记:elysia
    • 基于 bun笔记bunoven-sh/bun · MIT, Zig · JavaScriptCore,tinycc,libiconv LGPLv2 · boringssl,libarchive,libiconv,lol-html,mimalloc,picohttp,tinycc,uSockets,zlib-cloudflare,libicu,uWebsockets打开:/notes/web/dev/bun 的 Web 框架
    • 使用 @sinclair/typebox
    • 代码量很少,逻辑简单
    • AOT
      • 生成代码来进行 route
      • route 变成一个大 switch
    • 与 hono笔记Honohonojs/hono · Fast, Lightweight, Web-standards · 支持环境 · Cloudflare Workers · Cloudflare Pages · Fastly Compute · Deno · Bun打开:/notes/web/dev/hono 非常相似,但面向 bun 为主
      • hono 更早,支持更多 环境
      • 没有 AOT
      • 没默认 typebox - 支持多种 validator
  • 参考
    • bogeychan/elysia-polyfillsGitHubbogeychan/elysia-polyfillselysiajs/elysia · 基于 bun 的 Web 框架 · 使用 @sinclair/typebox · 代码量很少,逻辑简单 · AOT · 生成代码来进行 route · route 变成一个大 switch · 与 hono 非常相似,但面向 bun 为主笔记:elysia
      • 可以在 node 环境下使用 elysia
bash
pnpm add elysia @elysiajs/swagger @elysiajs/static
server.ts
import { Elysia, t } from 'elysia';
import { swagger } from '@elysiajs/swagger';

const app = new Elysia()
  .use(swagger())
  .post('/sign-in', ({ body }) => signIn(body), {
    body: t.Object({
      username: t.String(),
      password: t.String(),
    }),
  })
  .listen(8080);

export type App = typeof app;
client.ts
import { edenTreaty } from '@elysiajs/eden';
import type { App } from './server';

const app = edenTreaty<App>('http://localhost:8080');

app.signIn
  .post({
    username: 'saltyaom',
    password: 12345678,
  })
  .then(console.log);

Notes

  • 完整流程 elysiajs/elysia/src/dynamic-handle.tsGitHub Fileelysiajs/elysia/src/dynamic-handle.ts
  • decorator
    • 增加在 context 上
  • state
    • 增加在 store 上
  • context
    • request
    • set
    • store
    • body
    • query
    • params
    • headers
    • cookies
  • handler - 一条路由
    • store - 构建时的配置信息
      • handle
      • hooks
        • transform
        • beforeHandle
        • afterHandle
      • validator
        • body
        • headers
        • query
        • params
        • cookie
        • response
      • content - ContentType
        • application/octet-stream 会让 body 为 arrayBuffer
        • 没有则会触发 onParse
        • fallback 为基于 header 里的 content-type 进行 parse

FAQ

关联信息

反向链接、本文链接的其他页面和外部资料。

站内链接

  • bun
    笔记 · bun

    oven-sh/bun · MIT, Zig · JavaScriptCore,tinycc,libiconv LGPLv2 · boringssl,libarchive,libiconv,lol-html,mimalloc,picohttp,tinycc,uSockets,zlib-cloudflare,libicu,uWebsockets

  • Hono
    笔记 · hono

    honojs/hono · Fast, Lightweight, Web-standards · 支持环境 · Cloudflare Workers · Cloudflare Pages · Fastly Compute · Deno · Bun

References

GitHub4 条
最近更新commit 76db02aEdit

On this page