안녕하세요? 수구리입니다.
한창 Nest JS에 대해서 공부를 했었는데 차근차근 복습할 겸 정리를 해보도록 하겠습니다.
아래에는 Nest의 공식문서가 있습니다. 공식문서를 기반으로 정리를 한 내용입니다.
[ Nest JS 공식문서 ]
[ Nest JS ? ]
Nest는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임 워크이다.
progressive JavaScript를 사용하고 TypeScript로 빌드가 지원된다.
이는 개발자가 순수 JavaScript로 코딩할 수 있다는 의미이다.
Nest는 OOP(Object Oriented Programming), FP(Functional Programming) 및 FRP(Functional Reactive Programming) 요소를 사용할 수 있게 해 준다.
[ Nest JS의 내부 구조 ]
내부적으로 Nest는 Express와 같은 강력한 HTTP 서버 프레임 워크를 사용하며,
선택적으로 Fastify를 사용할 수 있도록 구성할 수 있다.
Nest는 이러한 공통 Node.js 프레임워크 위에 추상화 수준을 제공하지만, API를 개발자에게 직접 노출한다.
따라서 이를 통해 개발자는 기본 플랫폼에서 사용할 수 있는 수많은 모듈들을 자유롭게 사용할 수 있다.
[ Nest JS의 철학 ]
Node (및 서버 측 JS)를 위한 라이브러리, 도우미 및 도구가 많이 존재하지만, 이들 중 어느 것도 아키텍처의 주요 문제를 효과적으로 해결하지는 못한다.
Nest는 개발자와 팀이 고도로 테스트 가능하고 확장이 가능하며 느슨하게 결합되고 유지 관리가 쉬운 애플리케이션을 만들 수 있는 즉시 사용 가능한 애플리케이션 아키텍처를 제공한다.
이 아키텍처는 Angular에서 크게 영감을 받았다.
[ Nodejs 설치하기 ]
기본적으로 Nest JS를 사용하려면 Nodejs가 설치되어 있어야 한다.
Nodejs를 설치하고 터미널에서
node -v
명령어를 통해서 node가 잘 설치되었는지 확인해보자
[ Nest JS CLI 설치 및 프로젝트 생성하기 ]
Nest를 이용해서 프로젝트를 생성하려면 Nest CLI를 이용하여 프로젝트를 생성할 수 있다.
npm install -g @nestjs/cli
위의 명령어로 CLI를 전역 옵션 "-g"를 주어 설치를 하자!
프로젝트를 생성하기 위해서 적절한 위치에 프로젝트 이름의 폴더를 생성하고
폴더에서 코드 에디터를 실행시켜서 터미널 창에 아래의 명령어 입력
nest new ./
현재의 디렉터리에 nest 프로젝트를 생성하겠다는 의미이다.
프로젝트가 생성되고 폴더 구조를 살펴보자
위와 같이 Nest가 초기에 엄청 많은 것들을 준비해 준다. 간략하게 알아보자면
"src" 디렉터리 안에 여러 코어 파일로 채워지는데 다음과 같다.
- app.controller.ts : 하나의 라우터가 있는 기본 컨트롤러
- app.controller.spec.ts : 컨트롤러를 위한 유닛 테스트
- app.module.ts : 애플리케이션의 루트 모듈
- app.service.ts : 단일 메서드를 사용하는 기본 서비스
- main.ts : 핵심 기능 NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일
추가로 프로젝트의 "root" 디렉터리 안에 있는 파일들을 살펴보자.
- eslintrc.js : 개발자들을 위해 특정 규칙을 가지고 코드를 깔끔하게 짤 수 있게 도와주는 라이브러리로 타입 스크립트를 쓰는 가이드라인을 제시하며, 문법에 오류가 나면 알려주는 역할을 한다.
- prettierrc : 코드의 형식을 맞추는 데 사용한다. 작은따옴표, 큰 따옴표 Indent 값을 2 또는 4로 설정, 즉 에러를 찾는 역할이 아닌 code formatter이다.
- nest-cli.json : nest 프로젝트를 위해 특정한 설정을 할 수 있는 json 파일
- tsconfig.json : 어떻게 타입 스크립트를 컴파일할지를 설정하는 파일
- package.json : build, format, start.. 사용하는 모듈들에 관련된 정보가 있는 파일
프로젝트 생성 완료 후, 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();
main.ts에는 부트스트랩 하는 비동기 함수가 포함되어 있고,
3000 포트로 접속할 수 있음을 알 수 있다.
[ 서버 실행 및 접속 ]
아래의 명령어를 통해서 만들어진 프로젝트의 서버를 실행시킨다.
npm run start:dev
참고로 package.json에서
"start:dev": "nest start --watch",
이 부분을 실행하는 명령어이다.
서버가 실행되면
localhost:3000으로 접속해보자.
Hello World가 반겨줄 것이다!
'🌈 프로그래밍 > Nest JS' 카테고리의 다른 글
[ Nest JS ] TypeORM & pg module 설치 명령어 (0) | 2021.11.17 |
---|---|
[ Nest JS ] PostgreSQL 설치 pgAdmin으로 Server와 DB를 구축해보자 (3) | 2021.11.16 |
[ Nest JS ] Hot reload 설정하기 (0) | 2021.11.09 |
[ Nest JS ] 기본 프로젝트에서 Nest 로직 흐름 (0) | 2021.10.14 |
[ Nest JS ] Swagger를 사용해서 API 문서 만들기 (2) | 2021.08.30 |