Skip to content
v1.11.1 已发布 · 在 GitHub 上查看

Nestelia

基于 Elysia 和 Bun 的模块化框架。
装饰器 · 依赖注入 · 模块化 · Elysia 速度。

装饰器驱动路由

@Controller、@Get、@Post、@Body 等 — 简洁的声明式装饰器 API,原生运行于 Elysia 之上。

nestelia 将每个装饰路由直接映射到 Elysia 处理器,在框架层提供完整的类型推断和模式验证。

users.controller.ts
import { Controller, Get, Post, Body } from 'nestelia'
import { CreateUserDto } from './dto'

@Controller('/users')
export class UsersController {

  @Get()
  findAll() {
    return { users: [] }
  }

  @Post()
  create(@Body() dto: CreateUserDto) {
    return dto
  }
}

依赖注入

基于构造函数的依赖注入,通过 reflect-metadata 支持单例、瞬态和请求作用域。

用 @Injectable() 标记任意类并声明为提供者 — nestelia 在启动时自动解析完整的依赖关系图。

users.service.ts
import { Injectable } from 'nestelia'

@Injectable()
export class UsersService {
  private users: User[] = []

  async findAll(): Promise<User[]> {
    return this.users
  }

  async create(dto: CreateUserDto): Promise<User> {
    this.users.push(dto)
    return dto
  }
}

模块化架构

将控制器、提供者和导入封装到具有清晰显式结构的内聚可复用模块中。

一次调用 createElysiaApplication 即可连接整个依赖关系图并返回就绪的 Elysia 实例。

main.ts
import 'reflect-metadata'
import { createElysiaApplication } from 'nestelia'
import { AppModule } from './app.module'

const app = await createElysiaApplication(AppModule)

app.listen(3000)
// Listening on http://localhost:3000

性能

NestJS 风格的开发体验,Elysia 级别的速度——装饰器和 DI 几乎零开销。

1.7x faster than Fastify
1.9x faster than Express
2.3x faster than NestJS
ElysiaBun
74,395 reqs/s
NesteliaBun
71,703 reqs/s
FastifyNode
42,640 reqs/s
ExpressNode
37,825 reqs/s
NestJSNode
30,582 reqs/s
以每秒请求数衡量。GET / → 纯文本 'Hello World'。500 连接,10 秒。

基于 MIT 许可证发布。