> For the complete documentation index, see [llms.txt](https://jinwon-yoon.gitbook.io/jinonys-blog/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://jinwon-yoon.gitbook.io/jinonys-blog/daily-log/2022.08.25.md).

# 2022.08.25

일일 회고 15일차

## 할일 및 한일

* [x] nest.js 강의 보며 복습하기(50%)
* [x] nest.js 세미나 참석

## 경험 및 배

### nest.js 강의 보며 복습하기(50%)

이제서야 nest.js 강의를 다시 돌려보고 새로 레퍼지토리를 만들어 실습하며 복습을 다시 해보았다. 목표는 nest.js를 이용하여 CRUD 게시판 애플리케이션을 구현하는 것이 목표이다.

자세한 내용은 notion에 정리를 해놓았다.

{% embed url="<https://jinwonyoon.notion.site/Nest-js-f6ccada8f0684b2d951a0296c128e0dc>" %}
nest.js 노션 정
{% endembed %}

nest.js에서 **모듈**이란 ***@Module() 데코레이터로 주석이 달린 클래스***&#xC774;다. 프로그램은, root 모듈을 포함하여 적어도 하나의 모듈을 갖고 있다. 모듈에는 같은 기능을 하는 것들을 하나의 모듈 폴더에 넣어서 효과적으로 사용 가능하다. 모듈을 생성할 때는 나는 글로벌로 설정을 해놓지 않았기 때문에, `npx nest g module 모듈명` 명령어를 사용하여 생성한다.

다음으로 **Controller**란 ***들어오는 요청을 처리하고 결과를 클라이언트에게 반환***&#xD55C;다. nest.js에서 Controller는 @Controller 데코레이터로 클래스를 데코레이션하여 정의된다. `npx nest g controller 컨트롤러 이름 --no-spec` 명령어를 사용하여 생성하고, 테스트 코드는 만들지 않는다.

Controller안 **핸들러(Handler)**&#xB294; @Get , @Post , @Delete 등과 같은 ***데코레이터로 장식된 컨트롤러 클래스 내의 단순한 메소드***&#xC774;다.

그리고 **Provider**은 nest의 기본 개념으로써 대부분의 기본 nest 클래스는 서비스, 리포지토리, 팩토리, 헬퍼등 providers로 취급될 수 있다. Provider은 ***종속성으로 주입하여 객체를 다양한 관계로 만들 수 있다.***

마지막으로 **Service**는 Controller에서 ***데이터의 유효성 체크를 하거나, 데이터베이스에 아이템을 생성하는 등의 작업을 하는 부분을 처리***&#xD55C;다. `npx nest g service 서비스 이름 --no-spec` 명령어를 통해 생성한다.

이것이 게시판 생성을 위해 기본적으로 알고 있어야 할 개념들이고, 자세한 구현 과정은 notion에 정리되어 있으며 차차 영상을 보며 실습하여 추가적으로 계속 더해볼 예정이다.

## 개선 및 목표

* 다다음주부터는 nest.js 도큐먼트를 보고 발표 준비를 해가야 하니, 다음주내에 영상을 마무리하고 게시판 생성을 끝내보자.
