NestJs?
nodejs에서 애플리케이션 구축을 위해 사용되는 프레임워크의 하나이다.
타입스크립트와 OOP(Object Oriented Programming)을 지원한다는 특징이 있다.
NestJs 초기 세팅
// 기본적으로 node.js가 설치되어 있다고 가정하였다.
// nest.js 클라이언트가 설치되어야 한다.
> npm i -g @nestjs/cli
nest cli를 사용할 수 있도록 전역에 nest client인 @nestjs/cli를 설치하는 명령어이다.
> nest new [project_name]
nestjs의 프로젝트를 위한 기본적인 폴더 구조 및 환경을 생성하여 주는 명령어이다. [project_name] 생성하려는 project의 명칭을 넣는다.
해당 명령어 입력 시 위와 같이 어떠한 패키지 매니저를 사용할 것인지 묻는데 본인이 사용하는 것을 선택후 enter를 누르면 된다.
cd [project_name]
생성된 프로젝트로 이동하여 작업을 하면 된다.
기본 폴더 구조 설명
아래는 nest cli로 프로젝트 생성시 만들어지는 기본 폴더 구조이다.
my_project
L node_modules
L src
- app.controller.spec.ts
- app.controller.ts
- app.module.ts
- app.service.ts
- main.ts
L test
- app.e2e-spec.ts
- jest-e2e.json
- .eslintrc.js
- .gitignore
- .prettierrc
- nest-cli.json
- package-lock.json
- package.json
- README.md
- tsconfig.build.json
- tsconfig.json
.eslintrc.js
코드 작성시 일정한 기준에 맞추어 코드를 작성할 수 있도록 도와주는 라이브러리이다. 타입스크립트 가이드라인 제시, 문법 오류시 알려주는 역할 등을 한다.
.prettierrc
.eslintrc.js 파일과 비슷한 역할을 하며, 주로 일정한 코드 형식을 맞추는데 사용된다. 작은 따옴표( ')를 사용할지 큰 따옴표를('')를 사용할 지 또는 인덴트 즉 앞에 띄어쓰기를 2칸으로 할 지 4칸으로 할 지 등과 같은 코드의 포멧터 역할을 한다.
.eslintrc가 좀 더 문법 위주의 코드 작성 기준을 잡는 역할을 하고 .prettierrc는 코드 형식 위주의 코드 작성 기준을 잡는 역할을 한다.
. nest-cli.json
nest.js 프로젝트 자체의 설정을 위해 필요한 것을 작성하여 주는 파일이다.
tsconfig.json
nest.js는 기본적으로 타입스크립트로 이루어져서, 타입스크립트 컴파일시 설정에 대한 정보를 담고있는 파일이다.
package.json
프로젝트에 대한 전반적인 정보를 담고 있는 파일이다.
ex) 프로젝트명, 사용된 라이브러리, 실행 명령어 등
src 폴더
nestjs 프로젝트는 위한 대부분의 서비스 관련 로직이 들어가는 폴더이다.
main.ts
프로젝트의 시작점을 담당하는 파일이다.
* 파일 실행 흐름
main.ts -> app.module.ts -> app.controller.ts -> app.service.ts 흐름으로 프로그램이 실행된다.
- app.module.ts는 express에서 기본적인 서버 세팅을 하는 곳과 같은 역할이고
- app.controller.ts는 express에서 라우터 역할 하는 곳이고,
- app.service.ts는 실질적인 서비스 로직이 담겨 있는 곳이다.
* 사용자 흐름
user request -> controller -> service -> controller -> user
* 기타개념
decorator ( 데코레이터 )
: 변수 앞에 @이 함께 사용된 것으로, 의미 그대로 다른 객체를 꾸며주는 역할을 함수이다. 데코레이터를 사용하여, 특정 기능을 쉽게 사용할 수 있게 된다.
모듈
- @Module 데코레이터로 주석이 달린 클래스이다.
- nest 애플리케이션 구조 구성시 사용하는 메타 데이터를 제공한다. 즉 하나의 모듈은 특정 부분의 서비스에 대한 컨트롤러 서비스 로직을 담고 있는 것이다. 모듈은 쉽게 설명하면 하나의 인스턴스를 생성해내는 틀이라고도 할 수 있다. * 루트 모듈은 nest가 사용되는 시작점이다. * 모듈은 기능별로 구현된다. ex) users, orders, chats
컨트롤러 (controller)
- @Controller 데코레이터를 사용한다. ex) @Controller('/user')
- 사용자의 요청을 받고 응답을 담당하는 부분이다.
providers?
@Injectable 데코레이터를 사용하며, 다른 컴포넌트에서 해당 클래스를 사용할 수 있도록 종속성을 제공하여 주는 것이다.
'Javascript > Node.js' 카테고리의 다른 글
[ Javascript ] - Nest Js controller 구현하기 (0) | 2022.07.13 |
---|---|
[ Javascript ] - nestjs 기본 세팅 (0) | 2022.07.13 |
[ Node.js ] - iamport를 사용해서 pg사 연동해보기 (0) | 2022.06.15 |
[ Node.js ] - node.js란? ( + 기본 코드 ) (0) | 2022.06.10 |
[ Node.js ] - 서버 DDos 공격 막기 (0) | 2022.06.02 |