A progressive Node.js framework for building efficient and scalable server-side applications.
Nest framework TypeScript starter repository.
$ npm install
# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod
# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:cov
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
- Author - Kamil Myśliwiec
- Website - https://nestjs.com
- Twitter - @nestframework
Nest is MIT licensed.
- ビジネスロジックを定義
- Controllerから呼び出すことでユースケースを実現
- Controllerにビジネスロジックを書いても動作はする。→責務ごとに分割することで、保守性・拡張性などが上がるので良い設計となる
- 日本語にすると「依存性の注入」
- 依存関係のあるオブジェクトを外部から渡す
- 本番用とテスト用でインスタンスの切り替え
- ログの出力先の切り替え
→ 規模が大きくなるとこれらをやるのが面倒になる → 簡単にできる仕組みをDIコンテナという
- classに@Injectable()デコレータをつける (
@Service()
でない点に注意!)
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {}
- class内にビジネスロジックを作成する
import { Injectable } from '@nestjs/common';
@Injectable()
export class UsersService {
find(userName: number) {
// Find user
}
}
- ModuleのprovidersにServiceを登録する
@Module({
controllers: [UsersController],
providers: [UsersService],
})
export class UsersModule {}
- ControllerのconstructorでServiceを引数に取る
@Controller('users')
export class UsersController {
constructor(private readonly userService: UsersService) {}
@Get(':username')
find(@Param('username') userName: string) {
this.userService.find(userName);
}
}