Chuyển đến nội dung chính

レッスン 1: NestJS の紹介 - なぜ NestJS を選ぶのですか?

NestJS が何であるかを確認し、Express、Fastify、Koa と比較してください。モジュールベースのアーキテクチャ、依存関係の注入、TypeScript ファースト。エコシステムと実際の使用例。

💻 プログラミング — レッスン 1 レッスン 1: NestJS の紹介 - 選択する理由 ネストJS?

NestJS: 基本から高度まで

パート 1: NestJS プラットフォーム

xdev.asia

1.NestJS とは何ですか?

NestJS は、TypeScript をメイン言語として使用する進歩的な Node.js フレームワークで、効率的で信頼性が高く、拡張性の高いサーバー側アプリケーションを構築するように設計されています。作成者 カミル・ムィシリヴィエツ 2017 年、NestJS はそのアーキテクチャで Angular からインスピレーションを得ました。 モジュールベース、 依存関係の注入 そして デコレータパターン。

NestJS は Express.js (デフォルト) または Fastify 上で実行され、上に抽象化レイヤーを提供しますが、必要に応じて基礎となるプラットフォームの API に直接アクセスできます。

NestJS を選ぶ理由

  • TypeScript ファースト: 完全に TypeScript で書かれており、強力なタイプ セーフをサポートしています

  • 建築のこだわり: 大規模なチームに明確で保守しやすいアーキテクチャを提供します

  • 依存関係の注入: IoCコンテナ内蔵、簡単なテスト、疎結合

  • 豊かなエコシステム: GraphQL、WebSocket、マイクロサービス、CQRS、および 200 以上の公式パッケージ

  • エンタープライズ対応: Adidas、Roche、Trilon、および多くの大企業によって使用されています

2. NestJS と他のフレームワークを比較する

基準ネストJS急行高速化コア
TypeScriptネイティブプラグインプラグインプラグイン
建築意見が多いミニマリストミニマリストミニマリスト
DIコンテナ内蔵❌❌❌
CLI強力なエクスプレスジェネレータfastify-cli❌
グラフQL@nestjs/graphqlアポロサーバーメルクリウスアポロサーバー
Webソケット@nestjs/ウェブソケットソケット.iofastify Websocketマニュアル
マイクロサービス内蔵❌❌❌
テストテストモジュール手動セットアップ手動セットアップ手動セットアップ
学習曲線平均低い低い低い
適切なエンタープライズ、ビッグチームMVP、小規模アプリ高性能ミドルウェア中心

3. NestJS アーキテクチャ

NestJS はアーキテクチャに従っています 3層 モジュールシステムと組み合わせると:

┌──────────────────────────────────────────────┐
│                  Application                  │
├──────────────────────────────────────────────┤
│  ┌─────────────┐  ┌─────────────┐            │
│  │ Module A     │  │ Module B     │           │
│  │ ┌─────────┐ │  │ ┌─────────┐ │           │
│  │ │Controller│ │  │ │Controller│ │           │
│  │ └────┬────┘ │  │ └────┬────┘ │           │
│  │      ↓      │  │      ↓      │           │
│  │ ┌─────────┐ │  │ ┌─────────┐ │           │
│  │ │ Service  │ │  │ │ Service  │ │           │
│  │ └────┬────┘ │  │ └────┬────┘ │           │
│  │      ↓      │  │      ↓      │           │
│  │ ┌─────────┐ │  │ ┌─────────┐ │           │
│  │ │  Repo   │ │  │ │  Repo   │ │           │
│  │ └─────────┘ │  │ └─────────┘ │           │
│  └─────────────┘  └─────────────┘            │
├──────────────────────────────────────────────┤
│           Platform (Express/Fastify)          │
└──────────────────────────────────────────────┘

主な成分

  • モジュール: コード組織単位、関連するコンポーネントをグループ化する

  • コントローラー: HTTP リクエストを処理し、ルートを定義し、応答を返します。

  • プロバイダー/サービス: DI 経由でコントローラーに注入されるビジネス ロジックが含まれています

  • 衛兵: ハンドラーにリクエストする前に認可を確認してください

  • インターセプター: ハンドラー処理の前後でデータを変換します

  • パイプ: 入力データの検証と変換

  • フィルター: 例外を処理し、エラー応答をフォーマットします。

  • ミドルウェア: Express ミドルウェアと同様に、ルート ハンドラーの前に実行されます。

4. NestJS でのリクエストのライフサイクル

HTTP リクエストが NestJS アプリケーションに届くと、次の順序でクラスを通過します。

Request
  → Middleware
    → Guards
      → Interceptors (before)
        → Pipes
          → Route Handler (Controller method)
        → Interceptors (after)
      → Exception Filters (nếu có lỗi)
Response

このライフサイクルを理解することは、ロジックをどこに適切に配置するかを知るのに役立つため重要です。

5. NestJS エコシステム

NestJS には非常に豊富な公式パッケージ エコシステムがあります。

パッケージ目的
@nestjs/typebugSQL データベースの TypeORM 統合
@nestjs/マングースMongoDB の Mongoose 統合
@nestjs/graphqlApollo/Mercurius を使用した GraphQL API
@nestjs/ウェブソケットWebSocket/Socket.IOによるリアルタイム
@nestjs/マイクロサービスマイクロサービス (TCP、Redis、NATS、RabbitMQ、Kafka、gRPC)
@nestjs/パスポート認証戦略
@nestjs/jwtJWTトークンの生成/検証
@nestjs/スロットラーレート制限
@nestjs/config構成管理
@nestjs/スケジュールタスクのスケジュール設定 (Cron ジョブ)
@nestjs/キャッシュマネージャーキャッシュ (メモリ、Redis)
@nestjs/swaggerOpenAPI/Swagger ドキュメント
@nestjs/ターミナル健康診断
@nestjs/イベントエミッターイベント駆動型アーキテクチャ
@nestjs/cqrsコマンドクエリの責任の分離

6. NestJS をいつ使用する必要がありますか?

次の場合には NestJS を使用する必要があります。

  • エンタープライズプロジェクトと大規模チームには明確なアーキテクチャが必要です
  • TypeScript のネイティブ サポートが必要
  • マイクロサービス アーキテクチャが必要
  • 多くのプロトコルを統合する必要がある (REST + GraphQL + WebSocket)
  • 長期プロジェクトには高い保守性が必要
  • Angular/React/Vue アプリケーションのバックエンド

次の場合は代替案を検討してください。

  • 小規模な MVP、迅速な発送が必要 → Express/Fastify
  • シンプルなサーバーレス関数 → ライブ AWS Lambda
  • 非常にシンプルな API、エンドポイントが少ない → Hono、Elysia

7. まとめ

NestJS は、バックエンド開発用の最新の Node.js フレームワークであり、明確なアーキテクチャとスケーラビリティを必要とするエンタープライズ プロジェクトに特に適しています。 NestJS は、TypeScript ファーストのアプローチ、依存性注入の組み込み、豊富なエコシステムを備えており、開発者が高品質のアプリケーションを効率的に構築できるように支援します。

次の記事では、TypeScript の基本事項、つまり NestJS を効果的に操作するために必要な TypeScript の知識を確認します。