Open4
Nest.js + GraphQL開発メモ
自身の技術的な知見を広げるため、Nest.jsとGraphQLの特徴・メリット等を調べながら開発してみる。
Nest.jsの特徴
- TSで開発されたバックエンドのNode.jsフレームワーク。デフォルトでTSをサポートしている。
- 内部の実行エンジン(コア)をExpressもしくはFastifyから選択して利用できる。デフォルトではExpress。
- DIコンテナをデフォルトで活用できる
- デフォルトでjestが用意されており、単体テストやE2Eテストがかんたんにできる
- アーキテクチャはAngularの影響を強く受けている
- GraphQLとREST APIの開発をサポートしている
- マイクロサービスを開発しやすい
- WebSocketと連携できる
参考
【復習】DIコンテナについて
- DIコンテナについて復習する前に、、、
DIとは
- DI(Dependency Injection)は直訳すると「依存性注入」だが、Wikipediaでは以下のように説明されており、「オブジェクト注入」のほうが解釈しやすいと思う。
あるオブジェクトや関数が、依存する他のオブジェクトや関数を受け取るデザインパターンである
- 注入とは、依存するクラスのインスタンスを外部から渡すこと
- DIを利用する場合、参照元クラスと参照先クラスの間にインターフェースを用意することで参照先クラスの実装を待たなくても良くなる(= テストしやすいことにもつながる)
- DIの種類
- インターフェース注入
- setter注入
- コンストラクタ注入
DIコンテナとは
- (DIを使って)あるクラスの生成時に、依存しているクラスが多い場合に、その依存関係を解決するための仕組み
参考
Nest.jsプロジェクトの作成
Nest CLIをインストールし、nest new [プロジェクト名]
で簡単にプロジェクト作成ができる。
npm run start:dev
でローカルでアプリケーション起動。
npm i -g @nestjs/cli
nest new nest-sample-app
(Nest.js、GraphQL含め)以下の記事を参考にさせていただきました。