这是什么?
Elysia 是一个用于构建 HTTP 服务器和 API 的 TypeScript 框架。它主打端到端的类型安全和出色的开发体验,构建在 Bun 运行时之上。
它是一个完整的 Web 框架,还是需要我自己组装的轻量路由库?
是一个完整的框架:路由、Cookie 处理和 URI 解码都是内置的。它的运行时依赖只有四个小包——一个路由器(memoirist)、一个 Cookie 解析器、一个 URI 解码器和一个类型映射辅助工具。
我怎么把它加到项目里并把服务器跑起来?
用 'bun add elysia' 安装这个包(npm 也可以),然后导入它就能在 Bun 上启动一个服务器;仓库自带的开发流程是 'bun run --watch example/a.ts'。
我是不是被绑定在 Bun 上,还是也能在 Node.js 上运行?
Bun 是官方推荐的运行时,但仓库的测试套件也明确在 Node.js 下运行这个框架——CommonJS 和 ESM 两种方式都有——所以 Node 项目也没问题。
我可以把它部署到哪里——能不能脱离普通服务器运行,比如 Cloudflare Workers?
可以——除了 Bun 和 Node,仓库还带了 Cloudflare Workers 的测试环境,并生成对应的 worker 类型,所以在 Cloudflare 上的边缘部署是有明确测试覆盖的。
端到端的类型安全在日常写代码时到底能给我带来什么?
路由定义和处理函数共享同一条类型链,所以路由接收的内容和返回的内容之间如果不匹配,在编译阶段就会暴露出来。仓库甚至专门维护了一套基于 tsc 的类型测试来保证这一点。
它成熟到可以用来搭建生产环境的服务吗,还是仍处于实验阶段?
算是成熟项目而非实验品:始于 2022 年 12 月,在 GitHub 上约有 19.2k 颗星,采用 MIT 许可证,并有覆盖多目标测试矩阵的 GitHub Actions 持续集成。
Which topics is it in?
developer-experience, type-safe, cloudflare-workers, bun, web-framework, http, rest-api, backend, web-development, performance, framework, npm