25
20

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 5 years have passed since last update.

始めかた | NestJSドキュメント和訳

Last updated at Posted at 2019-04-18

原文: First steps | NestJS - A progressive Node.js web framework

始めかた

この記事では、Nestの基礎について学びます。Nestアプリケーションの重要な構成要素に慣れるよう、入門レベルとしては多くの機能をカバーする基本的なCRUDアプリケーションを構築していきます。

言語

私たちはTypeScriptが大好きですが、なによりNode.jsが大好きです。なので、NestにはTypeScriptと純粋なJavaScriptの両方に互換性を持たせています。Nestは最新の言語機能を利用しているため、純粋なJavaScriptで使用するにはBabelコンパイラが必要です。

説明に使用するサンプルコードは主にTypeScriptになりますが、JavaScriptに切り替えることもできます(各サンプルコードの右上にある言語切り替えボタンをクリックするだけです)。

要件

ご使用のオペレーティングシステムにNode.js(>= 8.9.0)がインストールされていることを確認してください。

セットアップ

Nest CLIを使うと、新しいプロジェクトを簡単にセットアップできます。npmがインストール済みなら、OSのターミナルで次のコマンドを実行するだけで、新しいNestプロジェクトを作成することができます。

$ npm i -g @nestjs/cli
$ nest new project-name

projectディレクトリが作成され、Nodeモジュールとひな形ファイルがインストールされ、src/ディレクトリにはコアファイルの一式が入ります。

src
 ├─ app.controller.ts
 ├─ app.module.ts
 └─ main.ts

これらのコアファイルの概要は次のとおりです。

app.controller.ts 単一ルートのコントローラの基本的なサンプル。
app.module.ts アプリケーションのルートモジュール。
main.ts Nestアプリケーションのインスタンスを作成するために、コア機能であるNestFactoryを使用するアプリケーションのエントリファイル。

このmain.tsには、アプリケーションを**起動(bootstrap)**する非同期関数が含まれています:

@@filename(main)

import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(ApplicationModule);
  await app.listen(3000);
}
bootstrap();
@@switch
import { NestFactory } from '@nestjs/core';
import { ApplicationModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(ApplicationModule);
  await app.listen(3000);
}
bootstrap();

Nestアプリケーションのインスタンスを作成するために、コアのNestFactoryクラスを使います。NestFactoryアプリケーションインスタンスの作成のための静的メソッドを公開します。このcreate()メソッドは、INestApplicationインタフェースを満たすアプリケーションオブジェクトを返します。このオブジェクトは、後述の章で説明するメソッドの一式を提供します。上記のmain.tsでは、HTTPリスナーを起動し、アプリケーションがHTTPリクエストを受け取れるようになります。

Nest CLIで生成されたプロジェクトは初期的なプロジェクト構造であり、各モジュールはそれ専用のディレクトリに格納する規約に従っていくことが開発者に推奨されることにご留意ください。

プラットフォーム

Nestはプラットフォームにとらわれないフレームワークを目指しています。プラットフォームに依存しないので、開発者はさまざまな種類のアプリケーションで再利用可能な論理的な部分を作成することができます。技術的には、アダプターを作りさえすれば、NestはどんなHTTPフレームワークともの連携できます。今すぐ使えるHTTPプラットフォームは2つあり、expressfastifyです。開発者のニーズに最も合うものを選ぶことができます。

platform-express Expressは、Node向けのミニマリストWebフレームワークとして有名です。Nodeは実戦で使い倒されており、コミュニティによって実装された数多くのリソースを備えたプロダクションで使えるライブラリです。この@nestjs/platform-expressパッケージはデフォルトで使用されます。多くのユーザーにはExpressが役に立ち、有効にするためには何もする必要がありません。
platform-fastify Fastifyは、効率とスピードの最大化に重点を置いた、高性能で低オーバーヘッドのフレームワークです。 使い方はこちらをご覧ください。

どのプラットフォームを使用しても、固有のアプリケーションインタフェースを公開します。これらはそれぞれNestExpressApplicationNestFastifyApplicationとして見えます。

以下の例のように、NestFactory.create()メソッドに型を渡すと、appオブジェクトはその特定のプラットフォーム専用のメソッドを持つようになります。ただし、実際に基盤となるプラットフォームのAPIにアクセスする場合を除き、型を指定する必要はありません。

const app = await NestFactory.create<NestExpressApplication>(ApplicationModule);

アプリケーションを実行する

インストールの手順が完了したら、OSのコマンドプロンプトで次のコマンドを実行し、HTTPリクエストを待機するアプリケーションを起動できます:

$ npm run start

このコマンドはアプリを起動します。HTTPサーバはsrc/main.tsで定義されたポートを利用します。アプリケーションが起動したら、ブラウザを開いてhttp://localhost:3000/にアクセスしてください。Hello world!というメッセージが表示されるはずです。

25
20
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
25
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?