NestJS 개발 시작하기(로그인 인증 개발)
2. NestJS CLI로 개발시작
2. NestJS CLI
Spring Framework을 닮은 NestJS는 Express로 만드는 Node.js프로그램에 비해 하나의 API를 만드는데 많은 노력이 필요하다. 그래서, JavaScript에서 처음 개발을 시작한 개발자라면, "이렇게까지 해야 하나?"라는 거부감을 느끼게 하는 점도 없지 않다. 하지만 Spring Framework처럼 한번 손에 익으면 NestJS가 추가설정 없이 기본으로 제공하는 AOP나 IoC가 오히려 많은 도움이 되는 경우가 많다.
그래도 여전히 한 개의 API를 만들기 위해 Controller를 만들고, Service를 만들고, Model을 만드는 것은, 처음 Express를 사용할 때 하나의 .js나 .ts 프로그램으로 만들던 작업에 비하면 매우 귀찮아 보인다. 이것을 쉽게 해 줄 수 있게 도와주는 도구가 NestJS CLI (Command Line Interface)이다. NestJS CLI 명령을 사용하면 Controller, Service, Model파일을 만들고 프로그램 파일 간 연결을 위한 설정까지 도와준다.
NestJS와 NestJS를 사용하는 자세한 방법에 대한 문서는 아래를 참고하면 된다.
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea
docs.nestjs.com
a. NextJS CLI 설치
nvm이 설치되어 있지 않으면 먼저 nvm을 설치한다.
- Git bash의 nvm을 이용하려면 아래를 참고하면 되고,
Git Bash 활용하기 - 2. 리눅스 기능으로 Node.js 개발환경 만들기
Git Bash 활용하기1. 리눅스 기능 확장하기 2. 리눅스 기능으로 Node.js 개발환경 만들기0. Git Bash Node.js 개발환경이 필요한 이유윈도우 WSL 2를 사용해 설치한 우분투에 Node.js를 구성하는 것이 편할 때
front-it.tistory.com
- WSL2의 우분투를 이용하려면 아래를 참고하면 되고,
윈도우에 만드는 리눅스 개발 환경; 3. nvm으로 node.js 설치
윈도우에 만드는 리눅스 개발 환경 목차1. 우분투 리눅스 설치 (윈도우 10)2. 윈도우에 Docker 설치3. 속도 개선 후 node.js 설치4. VSCode 설치5. Docker로 MySQL시작하기6. Docker로 MongoDB 시작하기7. 윈도우 11
front-it.tistory.com
- CMD에서 바로 nvm과 node를 설치하려면
winget install CoreyButler.NVMforWindows
nvm install 20
를 사용해서 nvm과 Node.js의 최신버전 20.xx을 설치한다.
만일 node나 npm이 실행되지 않는다면
nvm on
명령을 사용해서 nvm으로 node를 관리하는 기능을 enable하면 된다.
- Node.js가 설치되면 NestJS CLI를 설치한다.
npm install -g @nestjs/cli
3. NestJS로 간단한 Auth만들기
이제 NestJS CLI를 이용해서 NestJS를 개발하는 방법을 기록하기 위해 간단한 Auth프로그램을 만들어 보려고 한다. 개발 요구사항을
- Auth는 signup, signin, signout의 3가지 API를 제공,
- 개인 정보는 email을 userid로 동일하게 사용하고, 사용자 명, password
를 가지는 것으로 정의한다.
a. NextJS 프로젝트 만들기
프로젝트 이름은 project1라고 하고 NestJS CLI를 사용해 new 프로젝트를 만드는데, 기본으로 설정되어 있는 npm 패키지 매니저 보다 더 빠르고 공간도 절약되는 pnpm으로 프로젝트를 만들기로 했다.
pnpm으로 프로젝트를 만들려면 먼저 pnpm을 설치하고
npm install -g pnpm
NestJS CLI를 이용해서 project1 프로젝트를 만든다.
nest new project1
b. Module, Controller, Service 만들기
MVC는 Web Application을 만들 때 현재 표준처럼 사용되고 있는 디자인 패턴인데, Web App을 데이터(Model), 화면(View), 로직(Controller)으로 분리해서 개발하는 방법이다. 로직을 처리하는 부분은 다시 Controller(주로 분기처리)와 Service(실제 비즈니스 로직을 처리하는 부분)로 나누어 복잡한 비즈니스 로직으로 확장되어도 개발이 가능하도록 하고 있다. 또한, 여러 개의 서비스 모듈의 하나의 프로젝트에서 개발할 수 있도록 Module을 사용해서 나누는 것이 좋다.
- 작업을 위해 위에서 만든 프로젝트 폴더로 먼저 이동하고
cd project1
- auth를 위한 Module을 만든다.
nest generate module auth
# 또는
nest g module auth
- auth module에 sign이란 이름의 controller와 service를 각각 생성한다.
nest g controller auth/sign
nest g service auth/sign
controller를 만들 때 auth/sign으로 지정하면 sign폴더를 다시 만든다. 만일 auth와 같은 폴더를 사용하면서 controller만 만들고 싶다면 --flat 옵션을 사용하면 된다.
지금까지 만든 프로젝트의 구조를 VSCode에서 확인해 보면 아래와 같다.
만들어진 프로그램을 실행하려면 빨간 네모에 나와 있는 명령어를 사용해서 실행하면, "Hello world!"를 확인할 수 있다.
nest start --debug --watch
curl localhost:3000
이제 개발을 시작할 준비가 되었다.
'프로그램 개발' 카테고리의 다른 글
NestJS 개발 시작하기(로그인 인증 개발); 4. TypeORM으로 DB연결 (1) | 2024.09.28 |
---|---|
NestJS 개발 시작하기(로그인 인증 개발); 3. API 개발과 Swagger (2) | 2024.09.26 |
NestJS 개발 시작하기(로그인 인증 개발); 1. NestJS와 Spring의 비교 (4) | 2024.09.17 |
엘라스틱서치(ELK)로 만드는 모니터링 시스템; 3. Filebeat- App Log수집 (2) | 2024.09.14 |
Starter Template으로 시작하는 Next.js; 2. 실행하기 (1) | 2024.01.01 |