Wii Pointer #1 Tilt Normal
본문 바로가기
📁 𝐟𝐫𝐚𝐦𝐞𝐖𝐨𝐫𝐤/Nest.js

[Nest.js] Nest.js의 아키텍쳐

by 개발자_후니 2023. 3. 30.
728x90
반응형

ARCHITECTURE OF NESTJS

 

1.0 Overview

Nestjs 시작하기

npm run start:dev

—> localhost:3000 으로 갈 수 있게 해준다는 뜻

src 파일을 헤쳐보자

app.controller.spec.ts

→ Controller 테스트 파일

app.controller.ts

→ Controller 파일

app.module.ts

→ Module 파일

app.service.ts

→ Service 파일

main.ts

→ app.js 와 비슷한 기능의 파일

1.1 / 1.2 ARCHITECTURE OF NEST.JS

main

→ 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();

module

→ 하나의 AppModule 에서 어플리케이션 생성

ex) 인증을 담당하는 어플리케이션 → users module

ex) Instagram 이라면? → photos module 필요하고 videos module 도 필요함.

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

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

controller

→ controller 가 하는일은 기본적으로 url을 가져오고 함수를 실행하는 것.

→ express 의 router 같은 존재

→ spec 파일은 test 파일

→ url을 가져오고 함수를 실행하는 것 뿐

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();
  }

  // express의 router 같은 형식으로 쓰였다.
  @Get("/hello")
  sayHello(): string {
    return this.appService.getHi();
  }
}

Services

→ NestJS 는 Controller 를 비지니스 로직이랑 구분 짓고 싶어함.

→ Controller 에서 나온 비즈니스 로직이 Service로 간다. → 실제로 함수를 가지는 부분

→ 실제로 비즈니스 로직을 실행하는 역할

import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello Nest!!';
  }
  getHi():string {
    return 'Hi Nest';
  }
}
  • Delete ␍ prettier/prettier 해결 방법

해결방법

프로젝트 폴더 내 .esLint 파일을 아래와 같이 수정해놓자. 저장 후 npm을 재실행하면 정상동작됨을 확인 할 수있었다.

rules: {
  'prettier/prettier': [
    'error',
    {
      endOfLine: 'auto',
    },
  ],
},

→ npm 재시작

728x90
반응형