Skip to content

Giới thiệu

Orbit là gì?

Orbit là một framework backend tiến bộ được tối ưu 100% cho runtime Bun. Nó tuân theo các mô hình theo phong cách NestJS - kiến trúc mô-đun, định tuyến dựa trên decorator và tiêm phụ thuộc - đồng thời tận dụng các khả năng hiệu suất tự nhiên của Bun.

Tại sao chọn Orbit?

Hiệu suất Bun tự nhiên

Không giống như các framework chạy trên Node.js và sử dụng các bộ chuyển đổi, Orbit được xây dựng đặc biệt cho Bun:

  • Bun.serve(): Máy chủ HTTP gốc mà không có chi phí Express hay Fastify
  • Bun.password: Băm mật khẩu tích hợp sử dụng Argon2
  • Socket TCP gốc: Tất cả các giao thức microservice đều sử dụng API socket gốc của Bun
  • Bun.Transpiler: Tải lại nhanh chóng với biên dịch TypeScript gần như tức thì

Mô hình quen thuộc

Nếu bạn đã từng sử dụng NestJS, bạn sẽ cảm thấy rất quen thuộc:

typescript
@Controller('users')
class UserController {
  constructor(private userService: UserService) {}

  @Get()
  findAll() {
    return this.userService.findAll();
  }

  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.userService.findOne(id);
  }

  @Post()
  create(@Body() dto: CreateUserDto) {
    return this.userService.create(dto);
  }
}

Bộ tính năng đầy đủ

Orbit cung cấp mọi thứ bạn cần để xây dựng các ứng dụng sẵn sàng cho sản xuất:

  • Core: Module, Controller, Provider, Container DI
  • Pipeline: Middleware, Guard, Pipe, Interceptor, Bộ lọc ngoại lệ
  • Cơ sở dữ liệu: Tích hợp Drizzle ORM với mẫu Repository
  • GraphQL: Code-first với DataLoader và Subscription
  • Microservices: 6 giao thức truyền tải (TCP, Redis, NATS, RabbitMQ, Kafka, gRPC)
  • WebSocket: Gateway với decorator
  • Bảo mật: JWT, Giới hạn tốc độ, Helmet, CSRF, Làm sạch
  • Khả năng quan sát: Truy vết, Metric, Logging có cấu trúc
  • DevTools: CLI, Tiện ích VS Code, Bảng điều khiển

Tổng quan kiến trúc

┌─────────────────────────────────────────────────────┐
│                    Ứng dụng                         │
├─────────────────────────────────────────────────────┤
│                                                      │
│  ┌──────────┐  ┌──────────┐  ┌──────────────────┐  │
│  │   HTTP   │  │ WebSocket│  │   Microservice   │  │
│  │ Requests │  │ Messages │  │     Messages     │  │
│  └────┬─────┘  └────┬─────┘  └────────┬─────────┘  │
│       │             │                  │            │
│       └─────────────┴──────────────────┘            │
│                     │                               │
│       ┌─────────────▼─────────────┐                │
│       │     Request Pipeline      │                │
│       │  Middleware → Guards →    │                │
│       │  Pipes → Interceptors     │                │
│       └─────────────┬─────────────┘                │
│                     │                               │
│       ┌─────────────▼─────────────┐                │
│       │       Controllers         │                │
│       └─────────────┬─────────────┘                │
│                     │                               │
│       ┌─────────────▼─────────────┐                │
│       │        Services           │                │
│       └─────────────┬─────────────┘                │
│                     │                               │
│       ┌─────────────▼─────────────┐                │
│       │      Repositories         │                │
│       └─────────────┬─────────────┘                │
│                     │                               │
│       ┌─────────────▼─────────────┐                │
│       │        Database           │                │
│       └───────────────────────────┘                │
│                                                      │
└─────────────────────────────────────────────────────┘

So sánh với NestJS

Tính năngOrbitNestJS
RuntimeBunNode.js
Máy chủ HTTPBun.serve()Express/Fastify
Hệ thống Module
Tiêm phụ thuộc
Decorator
Guards/Pipes/Interceptors
MicroservicesTCP gốcThư viện bên ngoài
GraphQL
WebSocket
Khởi động lạnh~10ms~100ms
Phụ thuộc bên ngoàiTối thiểuNhiều

Yêu cầu

  • Bun >= 1.0.0
  • TypeScript >= 5.0.0

Cấu hình TypeScript phải bao gồm:

json
{
  "compilerOptions": {
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  }
}

Các bước tiếp theo

Bạn đã sẵn sàng chưa? Hãy đến với hướng dẫn Bắt đầu nhanh để tạo ứng dụng Orbit đầu tiên của bạn.

Released under the MIT License.