12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NestJS初心者が基礎を学ぶ

Last updated at Posted at 2021-09-06

はじめに

仕事でちょくよく使ってたNestJS
上の人が書いたコードを使ってなんとなく使ってた。
実際中身がなんのこっちゃってなっててなんも理解できて無かった。
最近始まった別のプロジェクトでも使うことになってこのままじゃいかんと勉強始めた。

NestJSとは

公式では

効率的で信頼性が高く、拡張性の高いサーバーサイドアプリケーションを構築するための革新的なNode.jsフレームワークです。

と説明されています。

特徴として

  • typescriptとの親和性が高い
  • メンテナンス性が高い
  • OpenAPIのモジュールを提供
  • passportとかTypeORMとか使える
  • 公式ドキュメントが割と親切(但し英語)(と先輩が言ってた)

等があげられます。
まぁ僕はクソザコイングリッシュなので公式読めないんですけどね。
なのでちょっとずつ訳したり、いろんな人の記事見ながら少しづつ進めていこうかなと思います。

公式introduction&philosophyざっくり日本語訳

introduction

NestJSは効率的で拡張性の高いNode.jsのサーバーサイドアプリケーションを構築するためのフレームワーク。
typescriptを完全サポート。
OOP(オブジェクト指向プログラミング)とFP(関数型プログラミング)とFRP(関数型リアクティブプログラミング)の組み合わせで構成されている。

Expressのような堅牢なHTTPサーバーフレームワークを使用している。
オプションでFastifyも使用できるように設定されている。

Nestは、これらの一般的なNode.jsフレームワーク(Express/Fastify)の上に抽象化レベルを提供していますが、同時にそれらのAPIを開発者に直接公開しています。これにより、開発者は基盤となるプラットフォームで利用可能な無数のサードパーティモジュールを自由に使用することができます。

philosophy

近年、Node.jsのおかげで、JavaScriptはフロントエンドとバックエンドの両方のアプリケーションにおいて、ウェブの「共通語」となりました。
これにより、Angular、React、Vueなどの素晴らしいプロジェクトが生まれ、開発者の生産性を向上させ、高速でテスト可能かつ拡張可能なフロントエンドアプリケーションの作成を可能にしています。しかし、多くの優れたライブラリ、ヘルパー、ツールがNode(とサーバーサイドJavaScript)のために存在する一方で、肝心なアーキテクチャの問題を効果的に解決する物は見当たらない。

Nestは、開発者やチームが高度にテスト可能で、スケーラブルで、疎結合で、メンテナンスが容易なアプリケーションを作成することを可能にする、すぐに使えるアプリケーションアーキテクチャを提供します。
このアーキテクチャはAngularに大きく影響を受けている。

Overview解説

  • Controllers
  • Providers
  • Modules
  • Middleware
  • Exception filters
  • Pipes
  • Guards
  • Interceptors
  • Custom decorators

公式のドキュメントでは上記の各概念の説明がある。
ざっくり説明すると
ControllersProvidersModulesは、クライアントからのリクエストに対するルーティングやビジネスロジック、それらをまとめる機能。主な軸はこの三つ。

残りの五つの概念(MiddlewareException filtersPipes、GuardsInterceptors)は、リクエストとレスポンスの経路上で様々な役割。
Custom decoratorsは独自のカスタムデコレータを作成に関して。

一個づつ学んでいこー

各項詳細

Controllers

Providers

Modules

NestJsのアーキテクチャ

一旦主な軸のControllers、Providers、Modulesの各解説が済んだので。
これら関係についてざっくりまとめる。

フロントから投げられたリクエストに対する処理をcontrollerに記述。
image.png
具体的な処理をproviderに落とし込む。
moduleは、それらの依存関係を取りまとめるイメージ
image.png

Middleware

まだ

Exception filters

まだ

Pipes

まだ

Guards

まだ

Interceptors

まだ

Custom decorators

まだ

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?