2021年には、JavaScriptが最も広く使用されていたプログラミング言語でした。
JavaScriptプログラミングを可能にする膨大な数のフレームワークに見られるように、このテクノロジーの魅力は否定できません。
いくつか言及すると、フロントエンドにはAngular、React、Vueがあり、バックエンドにはExpressとNextがあります。
JavaScriptでアクセス可能なバックエンドプログラミングのための非常に多くの素晴らしいフレームワークがあるので、単にExpressやNextを使用するのではなく、なぜ私が別の何かを検索するのか考えているかもしれません。
おそらく、まともな定型文を使用して開発プロセスを迅速に開始する必要があり、新しいコントローラーだけでなくサービスも手動で追加すると、病気になります。
または、管理が簡単な大規模でスケーラブルなソフトウェアを作成したい場合。 あるいは、もっと効率的で便利な方法で作業したいだけかもしれません。
どちらがあなたの状況に当てはまるかにかかわらず、Nest.jsはあなたのニーズに最適なソリューションになる可能性があります。
この投稿では、NestJSの洞察と実践的な経験を提供します。
NestJSとは何ですか?
ネストJ は、オープンソースで拡張可能で適応性のあるプログレッシブノードフレームワークです。 .js バックエンドシステムを構築し、関与させ、挑戦するためのフレームワーク。 これで、成長率が最も速いノードになります。
js用のTypeScriptフレームワーク。 NestJSは、スケーラブルでテスト可能で、接続が緩いアプリケーションを作成するために使用されます。
ノードにスケーラビリティを追加します。 Jsサーバーはまったく新しいレベルになりました。 PostgreSQL、MongoDB、およびMySQLは、サポートされているデータベースのXNUMXつです。
NestJSは、他のライブラリで使用できるため、拡張可能です。 適応性のある本格的なエコシステムのため、柔軟性があります。 また、JavaScriptの機能と設計原則をサポートしているため、プログレッシブです。
これは主にAngular、React、Vueの影響を受け、依存性注入が組み込まれています。
特徴
- 使い方、学び、習得は簡単です。
- それは無料で オープンソースの (MITライセンス)
- 生産性の向上と開発の簡素化のための強力なコマンドラインインターフェイス(CLI)
- 使いやすいユニットテストプログラム
- JavaScriptのスーパーセットである厳密に型指定された言語であるTypeScriptが使用されます。
- アクティブなコードベースの開発と保守。
- TypeORM、Mongoose、GraphQL、ロギング、検証、キャッシング、WebSocketなどの一般的なテクノロジーやアイデアとのインターフェースを簡単にする、何百ものネスト固有のモジュールのサポート。
NestJSの構成要素は何ですか?
Nestアプリケーションの構築コンポーネントを以下に示します。 他にもありますが、これらXNUMXつが最も重要です。 それらを簡単に見てみましょう。
1 コントローラー
コントローラは、着信要求の処理とクライアントへの応答を担当します。 特定のHTTP要求を受信し、ルーティングシステムがどのコントローラーがどの要求を取得するかを決定します。
次に、送信する適切な回答を作成します。 クラスとデコレータの助けを借りて、単純なコレクタが構築され、各コントローラにはさまざまなタスクを実行するための独自のルートセットがあります。
2。 プロバイダー
プロバイダーはNestの重要なアイデアです。 コアNestクラスの多く(サービス、リポジトリ、ファクトリ、ヘルパーなど)は、プロバイダーとして処理できます。
プロバイダーの基本的な概念は、依存関係として注入できるということです。 これは、オブジェクトが相互にさまざまな関連付けを形成できることを意味し、オブジェクトのインスタンスの「配線」の役割は、主にNestランタイムシステムにアウトソーシングできます。
3。 モジュール
モジュールは、アプリケーションの構造のコンポーネントを編成する@Module()デコレータを持つクラスです。 各アプリケーションには、アプリケーショングラフを作成するために使用されるルートモジュールがあります。これにより、プロバイダーとモジュール間の依存関係と相互作用がさらに解決されます。
このデコレータは、アプリケーションコードで使用されるコンポーネント、コントローラ、またはその他のリソースを識別し、それらをXNUMXつのセットに結合するために、Nest.jsにメタデータを提供します。
各モジュールには、何らかの方法で接続された機能のコレクションがあります。
NestJSの使用を開始する
1。 インストール
NestJSをインストールし、次の手順に従ってプロジェクトを作成しましょう。
この結果、次のディレクトリ構造が作成されます。
2 コントローラー
Nestのビルディングブロックはコントローラーです。 これらは、インバウンド要求が処理される場所です。 以下のコードに示すように、HTTPメソッド修飾子(Get、Post、Put、Deleteなど)デコレーターを使用してルートパスを指定できます。
Nestjsはデコレータアプローチを採用しており、JavaScriptもサポートしていますが、ほとんどがTypescriptで開発されています。 クラスバリデーターを使用して、リクエストの本文を検証することもできます。
Nestjsサーバーインスタンスを作成し、ValidationPipeをグローバルに追加します。 パイプは、コントローラーの前に実行される単なるメソッドです。 パイプは、@UsePipesデコレータを使用してメソッド/引数レベルで適用することもできます。
3。 プロバイダー
プロバイダーは、NestjsのもうXNUMXつの重要なコンポーネントです。 これまでのところ、私は一時変数にデータを格納していました。 そのため、このような単純なタスクは、コントローラーハンドラーを使用して実行できます。
ただし、より大きく、より複雑なロジックの場合、コードの分離と再利用は困難です。 これは、サプライヤが参加するときです。@ Injectableデコレータを使用して、クラスの上にプロバイダを宣言/作成できます。 次に、プロバイダーを使用して、依存性注入、ロギング、およびその他のタスクを実行できます。
4。 モジュール
Nestjsモジュールはグローバルではありません。 代わりに、彼らは深さを持っています。
ただし、他のモジュールと共有することもできます。 Angularと同様に、グローバルモジュールを提供しますが、サービス/コントローラーをNestjsで最も一般的に使用されるモジュールに保持することをお勧めします。
NestCLIはほとんどの場合モジュールを生成するために使用され、そのモジュールのコンテキストで生成されたプロバイダー/コントローラーはCLIによって自動的に追加されます。 これらは機能モジュールとして知られています。
5.例外フィルター
例外フィルターは、コントローラーが例外をスローしたときに呼び出されるエラーハンドラーです。 問題を自動的に管理し、適切でユーザーフレンドリーなエラーメッセージを配信します。
NotFoundException、BadRequestException、NotAcceptableException、UnauthorizedExceptionなど、多くのHttpException継承例外がパッケージ@ nestjs/commonによって提供されます。 独自のExceptionFilterを設計することもできます。
6.ミドルウェア
ルートハンドラの前に呼び出される関数は、ミドルウェアと呼ばれます。 要求オブジェクトと応答オブジェクト、およびアプリケーションの要求/応答サイクルのnext()ミドルウェア関数は、ミドルウェア関数からアクセスできます。
nextと呼ばれる変数は、通常、次のミドルウェア機能を識別するために使用されます。 カスタムNestミドルウェアは、@ Injectable()デコレータを使用してメソッドまたはクラスに実装できます。
7.警備員
警備員はXNUMXつのことだけに責任があります。 特定の状況(具体的には、ユーザー定義のロジック)に基づいて、要求がコントローラーによって処理されるかどうかを評価するのは、彼らの責任です。
これは認証/承認に役立ち、Nestjsで推奨される方法です。
認証/許可などはミドルウェアを使用して実行できますが、関連する強力なコンテキストがなく、要求の処理にどのメソッドが使用されるかを知る理由がないため、エクスプレスサーバーやその他のHTTPサーバーでは実行されません。
Advantages
- フレームワークは、エンドポイントからSwaggerドキュメントまであらゆるものを生成するために使用されるアノテーションに大きく依存しています。 エンドポイントは基本的で整頓されており、アノテーションにより一般的に開発が容易になります。
- Nest.jsはモジュールベースのフレームワークであるため、汎用モジュールを外部化し、多くのプロジェクトでコードを再利用するのは簡単です。
- Nest.jsのフォルダー構造は、Angularの影響を大きく受けます。 Nestサービスを設計する場合、これによりダウンタイムを最小限に抑えることができます。
- コンポーネントには独自のディレクトリがあり、ルートにはアプリケーションモジュールとメインファイルが含まれています。 構造が単純なため、アプリケーションの構造よりも、エンドポイントとその顧客の設計により多くの注意を向けることができます。
- Nestは、Angularと同様に、ノードパッケージマネージャーから利用できる優れたコマンドラインツールであるNestjs/cliを提供します。
デメリット
- Nestは、TypeScriptの使用とAngularの統合という点で利点がありますが、大企業の財政的支援が不足しています。
- ドキュメントの欠如は、Nestユーザーにとって最大の脅威となります。 フレームワークは他のフレームワークとの優れた相互作用を持っていますが、ドキュメントはまばらであり、潜在的な問題に対処していません。
- Nestには、TypeScriptの使用とAngularの点で利点があります。
まとめ
NestJSは、開発者に大きな力を提供します。 開発を始めるためにあなたがする必要があるのは 新しいアプリを作成する そして、あなたは行ってもいいです。 このフレームワークは、適切なアプリアーキテクチャを確立することにより、追加の段階を踏むのを支援しながら、すぐに大幅な後押しを提供します。
最先端の方法とテクノロジーを利用して、管理しやすく長持ちするアプリケーションを作成します。 GraphQL、WebSocketに接続し、マイクロサービスを構築するために使用できます。
コメントを残す