Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- javascript unit test
- AWS
- axios mock
- parameter group
- 리스코프치환원칙
- nestjs
- 도커
- docker
- jest.fn
- subnet
- VPC
- 단위테스트
- IPv4
- 인터넷게이트웨이
- test code
- 서브넷
- mock함수
- jest
- 미라클모닝
- 라우팅테이블
- TypeScript
- JavaScript
- 의존관계역전원칙
- mock객체
- docker commands
- Unit Test
- forbetterme
- 테스트코드
- axios-mock-adaptor
- TDD
Archives
- Today
- Total
My Dream Being Visualized
NestJS에 대하여 본문
728x90
※ 개인 공부를 위한 공간입니다. 틀린 부분 지적해주시면 감사하겠습니다 (_ _)
Nest JS 란?
- Node.js 서버 측 애플리케이션 구축을 위한 프레임 워크
- TypeScript로 빌드 및 지원
- Express.js 프레임워크를 토대로 만들어졌다
NestJS를 백엔드로 선택한 이유에 대하여
현재까지, 아래의 백엔드 프레임워크를 사용해보았다.
Python을 활용한 Django Rest Framework,
NodeJS 기반 ExpressJS
두 프레임워크는 장단점이 확실했다.
틀이 잡혀 있냐 아니냐,
처음엔 MTV라는 개념도 알지 못하고 시작했던 공부를 위한 DRF 이후,
회사에서 무지 성으로 신입 개발자들끼리만 모여서 사용했던 Express..
규모가 있는 서비스를 만들다보니, 개발자들마다 가독성을 위한 노력의 정도가 달랐으며 그에 대한 결과물 또한 알아보기 힘든 경우가 많았다. (리팩토링만 2~3개월만 걸린..)
사실 더 힘든 건 개발자들을 설득하여 구조변경 및 가독성을 높이기 위한 노력을 기울여달라는 규칙설계와 부탁이었다.
그리하여, 토이프로젝트는 안정성(Typescript), 확장성 및 구조(well-structured architecture) 등의 장점을 지닌 NestJS를 선택하게 되었다.
NestJS 설치
npm i -g @nestjs/cli
nest new <yourProjectName>
NestJS 실행
실행은 간단하다.
nest start --watch
npm run start:dev
둘 중 하나를 사용하면 된다.
--watch 혹은 :dev를 붙이는 이유는, 수정사항이 있어 저장할 때 마다 저장된 사항을 적용 및 테스트시 필요합니다.
(package.json 참고!)
NestJS 구조
- node_modules > 필요한 모듈들이 설치되는 폴더
- src > 대부분의 비즈니스 로직이 들어가는 부분
- main.ts > 앱 시작점
- .eslintrc.js > 개발자들이 특정한 규칙(+문법 오류 체크)을 갖고 코드를 깔끔하게 짤 수 있는 규칙 정의
- .gitignore > 깃헙 리포지토리에 push될 때 올리지 않을 파일 명시 (캐쉬, 모듈, 시크릿키 등등)
- .prettierrc > 포맷팅 관련 체크 및 포맷터 역할
- nest-cli.json > NestJS 프로젝트 자체에 필요한 설정
- package-lock.json > package.json에 명시된 각 모듈의 버전을 설치시 로컬 환경에 설치된 npm 버젼에 따라 다른 버전 혹은 다른 트리 구조를 설치가 될 수도 있다. (가끔 개발자들 사이에서 넌 되는데 왜 난 안되지? 하는..) 그 부분을 해소시켜주기 위해 package-lock.json을 통해 먼저 각 모듈들을 설치한다.
- package.json > name, version ...(프로젝트에 대한 간단한 설명(npm init시 설정가능한 부분들)), scripts(프로젝트 테스트, 시작, 빌드 등등 할 때 필요 설정 정의), dependencies(빌드시 필요한 라이브러리 명시), devDependencies(개발환경에서만 필요한 라이브러리 명시), jest(테스트 케이스를 만드는 테스팅 프레임워크 명시).
- README.md > 깃헙 readme 파일
- tsconfig.build.json > build 할 때 필요한 파일이며 excludes에는 빌드할 때 필요없는 파일 명시
- tsconfig.json > 타입스크립트를 어떻게 컴파일 할지 설정
기타
- 3 layer architecture
- prettier 및 eslint 설정이 이미 되어 있어서 너무 편함
- prod 실행시 build 후 생성된 폴더의 파일을 실행하는 걸 보니 이후 cd시 고려
- test와 src 폴더가 따로 나뉘어져 있는 걸 보니, 단위테스트 및 통합테스트를 지원하는 것 같아 보임. 이후에 공부해보고 이번 토이프로젝트는 꼭! 사용해볼 것임.
'Backend > NestJS' 카테고리의 다른 글
유저 비밀번호 암호화 (feat. bcryptjs) (0) | 2021.11.06 |
---|---|
NestJS 새로운 모듈 추가 (feat. auth) (0) | 2021.11.06 |
TypeORM 이란? (0) | 2021.11.06 |
NestJS 프로젝트 시작 전 설정 (0) | 2021.10.30 |