Skip to content

Min-Ground/becoming-node.js-backend-developer

Repository files navigation

becoming-node.js-backend-developer

Node.js 백엔드 개발자 되기

Chapter5. 자바스크립트에서 비동기 처리하기

  • 자바스크립트는 런타임(Node.js)에서 싱글 스레드로 동작한다. _ 이벤트 루프(Event Loop)
    • libuv 에서 File I/O, DNS Operation 등의 작업은 스레드 풀을 사용하기 때문에 멀티 스레드를 활용한다.
  • 싱글 스레드로 동작하기 때문에 callback, promise, async/await을 사용해 비동기 처리를 할 수 있다.
    • callback : 함수의 파라미터로 함수 전달, 가독성이 좋지 않음
    • promise : 비동기 작업 완료 시, 결과 반환하는 객체 / 대기 -> 성공 / 실패
    • async/await : Promise를 사용하는 비동기 작업을 동기적으로 처리하는 것처럼 코드 작성 할 수 있게 도와줌.

Chapter8. NestJS 시작하기

특징

  1. Node.js에서 실행하는 서버 사이드 프레임워크
  2. 타입스크립트 완벽 지원
  3. 자바스크릡트 최신 스펙 사용
  4. HTTP 요청 부분은 추상화되어 express, fastify 사용 가능

익스프레스 VS NestJS

익스프레스 NestJS
간략 소개 미니멀리스트 웹 프레임워크 자바스크립트의 최신 기능을 사용해 효율성을 추구하며 상업용 서버 애플리케이션 구축을 목표로 하는 프레임워크
라우터 직접 라우터 함수를 추가하거나, 미들웨어 사용 @Controller() 데코레이터 사용
의존성 주입 없음 잘 만든 의존성 주입 기능을 제공함. 서비스의 의존 관계의 관리가 쉬움
에러 핸들링 직접 에러 처리를 해야 함 @Catch() 데코레이터 사용
테스트 직접 테스트 관련 도구들을 설치 및 실행해야 함 jest를 기반으로 한 내장 테스트 모듈을 제공
인기도 Node.js에서 가장 인기 있는 프레임워크. 깃허브 스타 62170 두 번째로 인기 있는 프레임워크. 깃허브 스타 60700
아키텍처 특정 아키텍처를 요구하지 않음 컨트롤러, 프로바이더, 모듈을 사용한 애플리케이션 아키텍처 제공

NestJS는 쉽게 테스트하고, 확장 가능하고, 각 모듈간 의존성을 줄여줌으로써 유지보수가 쉬운 아키텍처를 제공한다. (데코레이터)

NestJS 요청 처리 방식

가드 -> 인터셉터 -> 파이프 -> 컨트롤러(필수) -> 서비스 -> 리포지토리

NestJS 네이밍 규칙

  1. 파일명은 .으로 연결한다. 모듈이 둘 이상의 단어로 구성되면 대시(-)로 연결한다.
  2. 클래스명은 카멜케이스를 사용한다.
  3. 같은 디렉터리에 있는 클래스는 index.ts를 통해서 임포트하는 것을 권장한다.
  4. 인터페이스 작명법은 I를 붙이는 방법이 있는데, 어색한 부분이 있어 웬만해서는 인터페이스를 만들고 그 하위 인터페이스 혹은 클래스를 만든다.
interface Series {}
interface BookSeries extends Series {}
class MovieSeries extends Series {}

블로그 API 만들기

  • 타입스크립트에서는 데이터만 가지고 있는 타입을 선언할 때, 클래스보다는 인터페이스를 사용한다. (DTO)
  • @Injectable을 붙이면 프로바이더(Provider)가 된다. 의존성 주입을 받을 수 있도록 한다.
    • AppModule의 모듈 설정에 Provider 설정을 추가한다.

Chapter9. NestJS 환경변수 설정하기

  • NestJS에서 환경변수 설정은 ConfigModule에서 할 수 있으며, 설정된 환경변수를 다른 모듈에서 사용하려면 ConfigService를 주입받아 사용한다.
  • ConfigModule.forRoot() 주요 옵션 : isGlobal (전역) / cache (환경변수 캐시) / envFilePath (환경 변수 파일 경로)
  • package.json / scripts에 NODE_ENV={환경명}을 추가해 서버 기동 시 환경을 설정한다.

Chapter10. 회원 가입과 인증하기

  • NestJS에서는 파이프(pipe)를 사용해 요청의 유효성을 검증한다.

About

Node.js 백엔드 개발자 되기

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published