1
1

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.

typescriptでバックエンド開発 Nest.jsのチュートリアルをやってみた

Last updated at Posted at 2021-07-02

はじめに

typescriptでバックエンドを作りたいと思ったとき、以前はExpressを使用してGulpでビルドする方法しかないものだっと思っていました。(それかdeno?)最近になってnestjsというフレームワークにたどり着いたので記載します。

cliのインストール

npm i -g @nestjs/cli

プロジェクトの作成

nestSampleというプロジェクトを作成

nest new nestSample

パッケージマネージャをnpmかyarnを選択できるようです。(ここではnpmを選択

CREATE nest-sample/.eslintrc.js (631 bytes)
CREATE nest-sample/.prettierrc (51 bytes)
CREATE nest-sample/README.md (3339 bytes)
CREATE nest-sample/nest-cli.json (64 bytes)
CREATE nest-sample/package.json (1973 bytes)
CREATE nest-sample/tsconfig.build.json (97 bytes)
CREATE nest-sample/tsconfig.json (339 bytes)
CREATE nest-sample/src/app.controller.spec.ts (617 bytes)
CREATE nest-sample/src/app.controller.ts (274 bytes)
CREATE nest-sample/src/app.module.ts (249 bytes)
CREATE nest-sample/src/app.service.ts (142 bytes)
CREATE nest-sample/src/main.ts (208 bytes)
CREATE nest-sample/test/app.e2e-spec.ts (630 bytes)
CREATE nest-sample/test/jest-e2e.json (183 bytes)

? Which package manager would you ❤️  to use? (Use arrow keys)
❯ npm 
  yarn 

インストールが完了したようです。

✔ Installation in progress... ☕

🚀  Successfully created project nest-sample
👉  Get started with the following commands:

$ cd nest-sample
$ npm run start

                                                                                                          
                                                                                           Thanks for installing Nest 🙏
                                                                                  Please consider donating to our open collective
                                                                                         to help us maintain this package.
                                                                                                          
                                                                                                          
                                                                                🍷  Donate: https://opencollective.com/nest

ディレクトリの構成は以下のような感じでした。

tree -I node_modules
.
├── nest-cli.json
├── package.json
├── package-lock.json
├── README.md
├── src
│   ├── app.controller.spec.ts
│   ├── app.controller.ts
│   ├── app.module.ts
│   ├── app.service.ts
│   └── main.ts
├── test
│   ├── app.e2e-spec.ts
│   └── jest-e2e.json
├── tsconfig.build.json
└── tsconfig.json

.gitがあったので gitのリポジトリが勝手に出来上がっているようです。

出来上がったコードを確認

エンドポイント

main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

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

読み込んでいるAppModule

app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

更に読み込んでいる AppController,AppServiceを確認

app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}

app.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello World!';
  }
}

controllerのクラスにserviceをコンストラクタで注入しているのがわかります。(DIパターンというやつですかね。

とりあえず動かしてみます。

npm start

> nest-sample@0.0.1 start
> nest start

[Nest] 3843   - 07/02/2021, 11:59:43 PM   [NestFactory] Starting Nest application...
[Nest] 3843   - 07/02/2021, 11:59:43 PM   [InstanceLoader] AppModule dependencies initialized +133ms
[Nest] 3843   - 07/02/2021, 11:59:43 PM   [RoutesResolver] AppController {}: +26ms
[Nest] 3843   - 07/02/2021, 11:59:43 PM   [RouterExplorer] Mapped {, GET} route +12ms
[Nest] 3843   - 07/02/2021, 11:59:43 PM   [NestApplication] Nest application successfully started +10ms

image.png

とりあえず動きました。

まだまだいろいろな機能がありそうなので少しづつ掘り出していければと思います。
typeORMの使用が推奨されているようなので、typeORMを使用した単純なCRUDでも作ってみれば色々とわかってくるかもしれません。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?