Skip to content
v1.11.1 выпущена · Смотреть на GitHub

Nestelia

Модульный фреймворк для Elysia и Bun.
Декораторы · DI · Модули · Скорость 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
  }
}

Dependency Injection

Constructor-based DI с singleton, transient и request scope-ами на базе 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
  }
}

Модульная архитектура

Инкапсулируйте controllers, providers и imports в целостные переиспользуемые модули с явной структурой.

Один вызов 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 — минимальный overhead от декораторов и 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 / → plain text 'Hello World'. 500 соединений, 10 секунд.

Распространяется по лицензии MIT.