요즘에 Nest.js에 관심이 생겨서 한 번 배워보려고 합니다 ㅎㅎ! 기존에 새싹에서 Express와 Spring을 다뤘었고 프로젝트도 Express로는 두번, Spring으로는 한번 해봤었는데 Nest.js는 새로운 기술이라서 도전해보고 싶었습니다! 요즘에 뜨고 있기도 하구요!! Express를 요즘엔 대부분 Nest.js로 바꾸는 추세더라구요!
좀 더 다양한 프로젝트에 활용할 수 있는 역량을 키우고 싶기도하고,,,, 그래서 오늘은 Nest.js에 대한 소개를 한번 해보려 합니다!
1. NestJs란?
Nest(NestJs)는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임 워크입니다. 프로그레시브 javascript를 사용하고 TypeScript로 빌드되고 완벽하게 지원하며(개발자가 순수 js로 코딩할 수도 있습니다만 그러진 않겠죠,,)OOP(Object Oriented Programming), FP(Functional Programming) 및 FRP(Functional Reactive Programming)요소를 사용할 수 있게 해줍니다.
2. NestJs는 내부적으로 어떻게 구성되었나요?
내부적으로 Nest는 Express와 같은 강력한 HTTP 서버 프레임 워크를 사용하며 선택적으로 Fastify를 사용하도록 구성 할 수도 있습니다.
**Fastify는 Express보다 더욱 빠르고 경량화되어 있습니다. 이는 더 적은 리소스를 사용하여 더 빠른 속도와 더 나은 성능을 제공할 수 있음을 의미합니다. 특히, 대규모의 웹 애플리케이션 또는 마이크로서비스 아키텍처에서 성능이 중요한 경우 Fastify를 사용하는 것이 유리할 수 있습니다.
Nest는 이러한 공통 NodeJs 프레임 워크(Express/Fastify)위에 추상화 수준을 제공하지만 API를 개발자에게 직접 노출합니다. 이를 통해 개밸자는 기본 플랫폼에서 사용할 수 있는 수많은 타사 모듈을 자유롭게 사용할 수 있습니다!
3. NestJs의 철학
철학이라,,, 거창해보이지만..
Node(및 서버 측 Javascript)를 위한 훌륭한 라이브러리, 도우미 및 도구가 많이 존재하지만 이들 중 어느것도 아키텍쳐의 주요 문제를 효과적으로 해결하지 못합니다.
NestJs는 개발자와 팀이 고도로 테스트 가능하고 확장 가능하며 느슨하게 결합되고 유지 관리가 쉬운 애플리케이션을 만들 수 있는 즉시사용 가능한 애플리케이션 아키텍쳐를 제공합니다. (Angular에서 영감을 받앗다고 합니다!!)
기존 ExpressJs를 사용하면 testing 기능, Typescript등등 많은 것들을 덧붙여주어야 했는데, Nest는 이런것들이 내장되어 있다고 합니다! 이 이유때문에 저는 Nest를 배워보고 싶었어용 ㅎㅎ
더 자세한 내용은 NestJs 공식문서를 참고해시면 좋을 것 같습니다!
4. NestJs 설치하기
NestJs를 이용해서 프로젝트를 시작할 때 NestCLI를 이용하면 간단히 프로젝트를 시작할 수 있습니다!
그럼 NestCLI를 함께 설치해봅시다!
"npm i -g @nestjs/cli"
kimseeun@gimseeuns-MacBook-Air ~ % npm i -g @nestjs/cli
added 286 packages in 18s
61 packages are looking for funding
run `npm fund` for details
이렇게 하면 NestJs CLI가 설치됩니다!
5. NestJs 프로젝트 만들어보기
"nest new [nestJs프로젝트 폴더 명]"
아까전에 nestJs CLI를 설치했기 때문에 이 명령어로 nest 프로젝트를 만들 수 있습니다!
kimseeun@gimseeuns-MacBook-Air documents % nest new nestjs-test
⚡ We will scaffold your app in a few seconds..
? Which package manager would you ❤️ to use? npm
CREATE nestjs-test/.eslintrc.js (663 bytes)
CREATE nestjs-test/.prettierrc (51 bytes)
CREATE nestjs-test/README.md (3340 bytes)
CREATE nestjs-test/nest-cli.json (171 bytes)
CREATE nestjs-test/package.json (1951 bytes)
CREATE nestjs-test/tsconfig.build.json (97 bytes)
CREATE nestjs-test/tsconfig.json (546 bytes)
CREATE nestjs-test/src/app.controller.ts (274 bytes)
CREATE nestjs-test/src/app.module.ts (249 bytes)
CREATE nestjs-test/src/app.service.ts (142 bytes)
CREATE nestjs-test/src/main.ts (208 bytes)
CREATE nestjs-test/src/app.controller.spec.ts (617 bytes)
CREATE nestjs-test/test/jest-e2e.json (183 bytes)
CREATE nestjs-test/test/app.e2e-spec.ts (630 bytes)
✔ Installation in progress... ☕
🚀 Successfully created project nestjs-test
👉 Get started with the following commands:
$ cd nestjs-test
$ npm run start
Thanks for installing Nest 🙏
Please consider donating to our open collective
to help us maintain this package.
🍷 Donate: https://opencollective.com/nest
이렇게 만들고!
kimseeun@gimseeuns-MacBook-Air documents % cd nestjs-test
kimseeun@gimseeuns-MacBook-Air nestjs-test % code .
해당 프로젝트로 이동해서
vscode를 열어주면!!
짠! 이렇게 생긴 파일들이 생성되어 있는 걸 볼 수 있습니다!
신기하게 test파일도 함께 생성되어있습니다! tdd에 용이하겠죠?
다음 포스팅에서는 각각의 폴더와 파일들이 어떤 역할을 하는지도 한번 살펴보고 직접 코드도 쳐보도록 하겠습니다!
'NestJs' 카테고리의 다른 글
NestJs 최신버전 업데이트 및 스터디 시작 (0) | 2024.02.06 |
---|---|
[NestJs] NestJs 기본 요소 (0) | 2024.01.29 |