☰ Mục lục series
Tài liệu NestJS tiếng Việt
  1. Nhập môn (Overview)
    1. Giới thiệu
    2. First steps
    3. Controllers
    4. Providers
    5. Modules
    6. Middleware
    7. Exception filters
    8. Pipes
    9. Guards
    10. Interceptors
    11. Custom decorators
  2. Nền tảng (Fundamentals)
    1. Custom providers
    2. Asynchronous providers
    3. Dynamic modules
    4. Injection scopes
    5. Circular dependency
    6. Module reference
    7. Lazy-loading modules
    8. Execution context
    9. Lifecycle events
    10. Discovery service
    11. Platform agnosticism
    12. Testing
  3. Kỹ thuật (Techniques)
    1. Configuration
    2. Database (SQL)
    3. MongoDB
    4. Validation
    5. Caching
    6. Serialization
    7. Versioning
    8. Task scheduling
    9. Queues
    10. Logging
    11. Cookies
    12. Events
    13. Compression
    14. File upload
    15. Streaming files
    16. HTTP module
    17. Session
    18. MVC
    19. Performance (Fastify)
    20. Server-Sent Events
  4. Bảo mật (Security)
    1. Authentication
    2. Authorization
    3. Encryption & Hashing
    4. Helmet
    5. CORS
    6. CSRF
    7. Rate limiting
    8. Vòng đời request
  5. OpenAPI (Swagger)
    1. Introduction
    2. Types and parameters
    3. Operations
    4. Security
    5. Mapped types
    6. Decorators
    7. CLI plugin
    8. Other features
  6. Recipes
    1. REPL
    2. CRUD generator
    3. SWC (fast compiler)
    4. Passport (auth)
    5. Hot reload
    6. MikroORM
    7. Router module
    8. Health checks (Terminus)
    9. CQRS
    10. Prisma
    11. Serve static
    12. Commander
    13. Async local storage
  7. WebSockets
    1. Gateways
    2. Exception filters
    3. Pipes
    4. Guards
    5. Interceptors
    6. Adapters
  8. Microservices
    1. Overview
    2. Redis
    3. MQTT
    4. NATS
    5. RabbitMQ
    6. Kafka
    7. gRPC
    8. Custom transporters
    9. Exception filters
    10. Pipes
    11. Pre-request hooks
    12. Guards
    13. Interceptors
  9. GraphQL
    1. Quick start
    2. Resolvers
    3. Mutations
    4. Subscriptions
    5. Scalars
    6. Directives
    7. Interfaces
    8. Unions and enums
    9. Field middleware
    10. Mapped types
    11. Plugins
    12. Complexity
    13. Extensions
    14. CLI plugin
    15. Generating SDL
    16. Sharing models
    17. Other features
    18. Federation
  10. CLI & triển khai
    1. CLI overview
    2. Workspaces
    3. Libraries
    4. Usage
    5. Scripts
    6. Deployment
    7. Standalone apps
  11. FAQ
    1. Serverless
    2. HTTP adapter
    3. Keep-Alive connections
    4. Global path prefix
    5. Raw body
    6. Hybrid application
    7. HTTPS & multiple servers
    8. Common errors
  12. Phụ lục
    1. Bảng thuật ngữ
Nền tảng (Fundamentals)

Platform agnosticism (Tính độc lập nền tảng)

Bản dịch từ docs.nestjs.com/fundamentals/platform-agnosticism

Nest là một framework độc lập nền tảng (platform-agnostic). Điều này nghĩa là bạn có thể phát triển các phần logic dùng lại được (reusable logical parts) và sử dụng chúng trên nhiều loại ứng dụng khác nhau. Ví dụ, hầu hết các component có thể tái sử dụng mà không cần sửa đổi trên nhiều HTTP server framework nền bên dưới khác nhau (ví dụ: Express và Fastify), và thậm chí trên nhiều loại ứng dụng khác nhau (ví dụ: HTTP server framework, Microservices với các transport layer khác nhau, và Web Sockets).

Ghi chú người dịch Đây là điểm khác biệt lớn so với Express/Koa mà bạn đã quen ở frontend/backend: Nest tách phần logic nghiệp vụ (controller, service, DI) ra khỏi platform-specific code (adapter cho Express/Fastify). Nhờ vậy đổi từ Express sang Fastify chỉ cần đổi adapter, không phải viết lại business logic — tương tự cách một service ở Go không nên phụ thuộc trực tiếp vào net/http mà nên nhận interface trừu tượng.

Build once, use everywhere (Xây một lần, dùng mọi nơi)

Phần Overview của tài liệu chủ yếu trình bày các kỹ thuật code sử dụng HTTP server framework (ví dụ: app cung cấp REST API hoặc app kiểu MVC render phía server). Tuy nhiên, tất cả các building block đó đều có thể dùng trên nhiều transport layer khác nhau (microservices hoặc websockets).

Hơn nữa, Nest còn có sẵn một module GraphQL riêng. Bạn có thể dùng GraphQL làm API layer thay thế cho REST API mà không cần thay đổi gì nhiều.

Ngoài ra, tính năng application context giúp tạo bất kỳ loại ứng dụng Node.js nào — kể cả CRON job và ứng dụng CLI — dựa trên nền Nest.

Nest hướng tới trở thành một platform toàn diện cho ứng dụng Node.js, mang lại tính modular và khả năng tái sử dụng ở mức cao hơn cho ứng dụng của bạn. Xây một lần, dùng ở mọi nơi!

Nội dung gốc: NestJS Documentation © Kamil Myśliwiec, giấy phép MIT. Bản dịch và ghi chú: Lê Văn Dũng.