かなりクールなNest JS


この記事で紹介する友人はNest JSです.
システムバックエンドの開発に関する専門知識がなく、
Express.jsで開発されたので、基本的な仕組みが備わっておらず、難解にコードを書き、多くの試行錯誤を経験したので、NestJSに触れたとき、とても感動しました.

紹介する


私はTSが好きです。



以上、NestJS公式サイトでの紹介記事です.以上のようにNestJSはTypeScriptを積極的に使用しています.最近JavaScriptで作成されたプロジェクトの大部分がTypeScriptに移行していることから,NestJSは開発者の興味を正確に把握している.

どこかで会ったことがあるようです。(feat. Angular)


Next JS CLIを使用してプロジェクトを開始し、フォルダ構造を表示します.

次の内容が含まれます.AngularでFrontendを開発した人は、moduleserviceなどの構造をよく知っているはずです.controllerから、各ロールを1つずつ理解しましょう.

Controller


デフォルトでは、controllerは、クライアントからのhttpリクエストの応答を処理する責任を負う.特定のリクエストが送信されると、ルーティングメカニズムは、どのコントローラがどのリクエストを受信するかを決定します.デフォルトでは、controllerを使用してdecoratorが作成されます.Decoratorは、クラスを所望のメタデータに関連付けることができる.
import { Controller, Get } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(): string {
    return 'This action returns all cats';
  }
}
以上のようにCatというEntityとそれに関連するActionが存在すると仮定する.例は1つしかありませんが、@Get()で宣言すると、GET Requestは/catsに入るとfindAll()という関数を実行します.

Module



各アプリケーションには少なくとも1つのモジュールがあり、最も中心的なルートモジュールは最新のアプリケーションの開始点です.もちろん、最小のアプリケーションは理論的にroot moduleとして実行できますが、これは一般的な状況ではありません.アプリケーションをより柔軟にするには、これらのモジュールを効率的に管理する必要があります.上記の目的に従ってモジュールを分離し、構造化する.

Service

Serviceは、データストアと直接通信することができる.デフォルトでは、上記のControllerで起動して作成されると、デフォルトでは@Injectable()コメントが上部に書き込まれます.
例を見てみましょうか.
@Injectable()
export class CatsService {
	private readonly cats: Cat[] = [];
    
    
    create(cat: Cat){
    	this.cats.push(cat);
    }
    
    findAll(): Cat[]{
    	return this.cats;
    }
    
 }
サービスには2つの機能があります.create() , findAll()createは、データベースからcat objectを直接受信して保存する関数であり、findAllはすべてのcatを検索するために使用されます.新しい機能は@Injectable()データレコーダを使用することです.