Skip to content
Curved text logo saying 'Elysia JS'

人体工程学框架

具有 TypeScript 端到端的类型安全,统一的类型系统和出色的开发人员体验。 由 Bun 提供加速支持。

开始使用
bun create elysia app

了解为什么开发人员喜欢 Elysia

第一个生产准备就绪
以及最受欢迎的 Bun 框架

我们的原则

设计以人为本

我们的目标是设计一个符合人体工程学、合理且高效的工作框架,即使是初学者也能轻松使用。

设计以避免不必要的复杂性,并为您简化类型复杂性,以便您专注于构建。

一个感觉就像 JavaScript 的框架

typescript
import { Elysia, file } from 'elysia'

new Elysia()
	.get('/', 'Hello World')
	.get('/image', file('mika.webp'))
	.get('/stream', function* () {
		yield 'Hello'
		yield 'World'
	})
	.ws('/realtime', {
		message(ws, message) {
			ws.send('got:' + message)
		}
	})
	.listen(3000)

返回值

一个字符串、数字或复杂的 JSON

我们所需要做的就是返回。

内置文件支持

要发送文件或图像,只需返回

没有什么更多或更少

流响应

使用 yield 流响应

我们所需要做的就是返回

实时数据

内置 µWebSocket

发送实时数据只需 3 行代码

更加先进的 类型安全

typescript
import { 
Elysia
} from 'elysia'
new
Elysia
()
.
get
('/id/:id', ({
params
,
set
}) => {
set
.
headers
.a
return 'Su' }) .
get
('/optional/:name?', ({
params
: {
name
} }) => {
return
name
?? 'Pardofelis'
}) .
listen
(3000)

你自己的文档 在 1 行中

这不是魔法

与 OpenAPI 模式深度集成
Elysia 可以直接为您的 API 生成 Swagger 文档。

Scalar documentation generated by Elysia using Elysia Swagger plugin
typescript
import { Elysia } from 'elysia'
import swagger from '@elysiajs/swagger'

new Elysia()
	.use(swagger())
	.use(character)
	.use(auth)
	.listen(3000)

11.88ms

POST /character/:id/chat

Playback

Request
Validation
Transaction
Upload
Sync
对于 DevOps

OpenTelemetry

Elysia 原生支持 OpenTelemetry。监控功能内置,因此您可以轻松监控您的服务,无论平台如何。

typescript
import { 
treaty
} from '@elysiajs/eden'
import type {
App
} from './server'
const
api
=
treaty
<
App
>('api.elysiajs.com')
const {
data
} = await
api
.
profile
.
patch
({
age
: 21
})
对于前端

端到端类型安全

与 tRPC 类似,Elysia 在无需代码生成的情况下,从后端到前端提供了类型安全。前后端的交互在编译时进行了类型检查。

21x

比 Express 更快

6x

比 Fastify 更快

  1. Elysia Bun
    2,454,631 reqs/s
  2. Gin Go

    676,019

  3. Spring Java

    506,087

  4. Fastify Node

    415,600

  5. Express Node

    113,117

  6. Nest Node

    105,064

以每秒请求次数进行测量。数据来源于官方 TechEmpower 基准测试 第 22 轮(2023-10-17)的 PlainText 结果。

充满信心地 进行测试

类型安全带有 自动完成功能

Elysia 提供了一种类型安全的层,用于从路由到参数地交互和测试您的服务器。

使用自动补全功能,您可以轻松地为服务器编写测试,而无需任何麻烦。

typescript
import { 
treaty
} from '@elysiajs/eden'
import {
app
} from './index'
import {
test
,
expect
} from 'bun:test'
const
server
=
treaty
(
app
)
test
('应处理重复用户', async () => {
const {
error
} = await
server
.
user
.
put
({
Argument of type '{ username: string; }' is not assignable to parameter of type '{ username: string; password: string; }'. Property 'password' is missing in type '{ username: string; }' but required in type '{ username: string; password: string; }'.
username
: 'mika',
})
expect
(
error
?.
value
).
toEqual
({
success
: false,
message
: '用户名已被占用'
}) })

由社区的爱所驱动

由你实现

Elysia不是由某个组织拥有,而是由社区推动的。
Elysia 的发展离不开您的支持

感谢你使 Elysia 成为可能

总结一下
提供 最好的
给予勇敢的人

对于建设者、发明家和有远见的人来说
我们花费了数年时间研究 JavaScript 框架的优点和缺点,所有这一切都是为了提供一次非凡的体验。

光速

比 Express 快 21 倍。

由 Bun 超级加速,

Elysia 是表现最佳的 JavaScript 框架之一。

安全

动态的类型安全

从类型到运行时构建

Elysia 学习你的代码库,适应,用你的类型强制执行

生产

今天最好的体验

人体工程学设计,以开发者体验为优先。没有任何技术废话。

这些是我们建立 Elysia 的基础,
为了提供最好的体验。

和我们一起
构建未来

快速开始教程