2021년에는 JavaScript가 가장 널리 사용되는 프로그래밍 언어였습니다.
JavaScript 프로그래밍을 가능하게 하는 수많은 프레임워크에서 볼 수 있듯이 이 기술의 매력은 부인할 수 없습니다.
프론트엔드에는 Angular, React, Vue가 있고 백엔드에는 Express와 Next가 있습니다.
JavaScript로 백엔드 프로그래밍을 할 수 있는 멋진 프레임워크가 너무 많기 때문에 단순히 Express 또는 Next를 사용하는 대신 다른 것을 검색해야 하는 이유를 생각할 수 있습니다.
적절한 상용구로 개발 프로세스를 신속하게 시작해야 할 수도 있습니다. 새 컨트롤러뿐만 아니라 서비스를 수동으로 추가하면 병이 됩니다.
또는 관리가 간편하고 확장 가능한 대규모 소프트웨어를 만들고 싶을 수도 있습니다. 또는 단순히 더 효율적이고 편리한 방식으로 작업하고 싶을 수도 있습니다.
상황에 관계없이 Nest.js는 귀하의 요구에 완벽한 솔루션이 될 수 있습니다.
이 게시물은 NestJS 통찰력과 실습 경험을 제공합니다.
NestJS는 무엇입니까?
네스트JS 오픈 소스, 확장 가능 및 적응력이 있는 프로그레시브 노드 프레임워크입니다. .js 백엔드 시스템 구축, 참여 및 도전을 위한 프레임워크. 이제 가장 빠른 성장률을 보이는 노드입니다.
js용 TypeScript 프레임워크. NestJS는 확장 가능하고 테스트 가능하며 느슨하게 연결된 애플리케이션을 만드는 데 사용됩니다.
Node.js에 확장성을 추가합니다. Js 서버는 완전히 새로운 수준으로 발전했습니다. PostgreSQL, MongoDB 및 MySQL은 지원되는 데이터베이스 중 하나입니다.
NestJS는 다른 라이브러리와 함께 사용할 수 있기 때문에 확장 가능합니다. 적응 가능한 완전한 생태계로 인해 유연합니다. JavaScript 기능과 디자인 원칙을 지원하므로 점진적입니다.
주로 Angular, React 및 Vue의 영향을 받으며 내장 종속성 주입과 함께 제공됩니다.
특징
- 사용, 학습 및 마스터가 간단합니다.
- 무료이며 오픈 소스 (MIT 라이선스)
- 생산성 향상 및 개발 단순성을 위한 강력한 명령줄 인터페이스(CLI)
- 사용하기 쉬운 단위 테스트 프로그램
- JavaScript의 상위 집합인 타이트한 형식 언어인 TypeScript가 사용됩니다.
- 활성 코드베이스의 개발 및 유지 관리.
- TypeORM, Mongoose, GraphQL, 로깅, 유효성 검사, 캐싱, WebSocket 등과 같은 인기 있는 기술 및 아이디어와 쉽게 인터페이스할 수 있도록 하는 수백 개의 중첩 특정 모듈을 지원합니다.
NestJS의 빌딩 블록은 무엇입니까?
Nest 애플리케이션의 구성 요소는 다음과 같습니다. 다른 것도 있지만 이 세 가지가 가장 중요합니다. 빨리 그들을 살펴 보자.
1. 컨트롤러
컨트롤러는 들어오는 요청을 처리하고 클라이언트에 응답하는 역할을 합니다. 특정 HTTP 요청을 수신하고 라우팅 시스템은 어떤 컨트롤러가 어떤 요청을 받는지 결정합니다.
그런 다음 보낼 적절한 답변을 작성합니다. 클래스와 데코레이터의 도움으로 간단한 수집기가 만들어지고 각 컨트롤러에는 다양한 작업을 수행하기 위한 고유한 경로 집합이 있습니다.
2. 제공자
공급자는 Nest의 핵심 아이디어입니다. 서비스, 리포지토리, 팩토리, 도우미 등 많은 핵심 Nest 클래스를 공급자로 처리할 수 있습니다.
공급자의 기본 개념은 종속성으로 주입될 수 있다는 것입니다. 이는 개체가 서로 다양한 연결을 형성할 수 있으며 개체의 인스턴스를 "연결"하는 역할을 주로 Nest 런타임 시스템에 아웃소싱할 수 있음을 의미합니다.
3. 모듈
모듈은 애플리케이션 구조의 구성 요소를 구성하는 @Module() 데코레이터가 있는 클래스입니다. 각 응용 프로그램에는 응용 프로그램 그래프를 구성하는 데 사용되는 루트 모듈이 있으며, 이는 공급자와 모듈 간의 종속성과 상호 작용을 추가로 해결합니다.
이 데코레이터는 애플리케이션 코드에서 사용할 구성 요소, 컨트롤러 또는 기타 리소스를 식별하고 단일 세트로 결합하기 위해 Nest.js에 메타데이터를 제공합니다.
각 모듈에는 어떤 방식으로든 연결된 기능 모음이 있습니다.
NestJS 시작하기
1. 설치
다음 단계에 따라 NestJS를 설치하고 프로젝트를 만들어 보겠습니다.
그 결과 다음 디렉토리 구조가 생성됩니다.
2. 컨트롤러
Nest의 빌딩 블록은 컨트롤러입니다. 인바운드 요청이 처리될 위치입니다. 아래 코드와 같이 HTTP 메서드 수정자(Get, Post, Put, Delete 등) 데코레이터를 사용하여 경로 경로를 지정할 수 있습니다.
Nestjs는 데코레이터 접근 방식을 사용하며 JavaScript도 지원하지만 대부분 Typescript로 개발됩니다. 클래스 유효성 검사기를 사용하여 요청 본문의 유효성을 검사할 수도 있습니다.
Nestjs 서버 인스턴스를 만들고 ValidationPipe를 전역적으로 추가하겠습니다. 파이프는 컨트롤러보다 먼저 실행되는 메서드일 뿐입니다. @UsePipes 데코레이터를 사용하여 메서드/인수 수준에서 파이프를 적용할 수도 있습니다.
3. 제공자
공급자는 Nestjs의 또 다른 중요한 구성 요소입니다. 지금까지는 임시 변수에 데이터를 저장하고 있었습니다. 이것이 컨트롤러 핸들러를 사용하여 이러한 간단한 작업을 수행할 수 있는 이유입니다.
그러나 더 크고 복잡한 논리의 경우 코드 분리 및 재사용이 어려울 수 있습니다. 이것은 공급자가 들어올 때입니다. @Injectable 데코레이터를 사용하여 클래스 위에 공급자를 선언/생성할 수 있습니다. 그런 다음 공급자를 사용하여 종속성 주입, 로깅 및 기타 작업을 수행할 수 있습니다.
4. 모듈
Nestjs 모듈은 전역적이지 않습니다. 대신 깊이가 있습니다.
그러나 다른 모듈과도 공유할 수 있습니다. Angular와 마찬가지로 글로벌 모듈을 제공하지만 Nestjs에서 가장 일반적으로 사용되는 모듈에 서비스/컨트롤러를 유지하는 것이 더 좋습니다.
NestCLI는 대부분의 경우 모듈을 생성하는 데 사용되며 해당 모듈의 컨텍스트에서 생성된 공급자/컨트롤러는 CLI에 의해 자동으로 추가됩니다. 이를 기능 모듈이라고 합니다.
5. 예외 필터
예외 필터는 컨트롤러가 예외를 throw할 때 호출되는 오류 처리기입니다. 자동으로 문제를 관리하고 적절하고 사용자에게 친숙한 오류 메시지를 전달합니다.
NotFoundException, BadRequestException, NotAcceptableException, UnauthorizedException 및 기타 많은 것을 포함하여 많은 HttpException 상속 예외가 @nestjs/common 패키지에서 제공됩니다. 자신만의 ExceptionFilter를 디자인할 수도 있습니다.
6. 미들웨어
라우트 핸들러 이전에 호출되는 함수를 미들웨어라고 합니다. 요청 및 응답 객체와 애플리케이션의 요청-응답 주기에 있는 next() 미들웨어 함수는 미들웨어 함수에 액세스할 수 있습니다.
next라는 변수는 일반적으로 다음 미들웨어 기능을 식별하는 데 사용됩니다. Custom Nest 미들웨어는 @Injectable() 데코레이터를 사용하여 메서드 또는 클래스에서 구현할 수 있습니다.
7. 경비원
경비원은 한 가지만 책임집니다. 특정 상황(특히 사용자 정의 논리)에 따라 컨트롤러가 요청을 처리할지 여부를 평가하는 것은 그들의 책임입니다.
인증/권한 부여에 유용하며 Nestjs에서 권장하는 방법입니다.
인증/권한 등은 미들웨어를 사용하여 수행할 수 있지만 명시적 또는 다른 HTTP 서버에서는 관련 강력한 컨텍스트가 없고 요청을 처리하는 데 사용할 방법을 알 이유가 없기 때문에 수행되지 않습니다.
장점
- 프레임워크는 끝점에서 Swagger 문서에 이르기까지 무엇이든 생성하는 데 사용되는 주석에 크게 의존합니다. 끝점은 기본적이고 깔끔하며 주석은 일반적으로 개발을 더 쉽게 만듭니다.
- Nest.js는 모듈 기반 프레임워크이기 때문에 범용 모듈을 외부화하고 많은 프로젝트에서 코드를 재사용하는 것이 간단합니다.
- Nest.js의 폴더 구조는 Angular의 영향을 많이 받습니다. Nest 서비스를 설계할 때 이를 통해 가동 중지 시간을 최소화할 수 있습니다.
- 구성 요소에는 응용 프로그램 모듈과 기본 파일이 포함된 루트와 함께 고유한 디렉터리가 있습니다. 구조가 단순하기 때문에 애플리케이션의 구조보다 엔드포인트와 고객의 디자인에 더 많은 관심을 기울일 수 있습니다.
- Angular와 마찬가지로 Nest는 Node Package Manager를 통해 사용할 수 있는 훌륭한 명령줄 도구인 Nestjs/cli를 제공합니다.
단점
- Nest는 TypeScript 사용 및 Angular 통합 측면에서 이점이 있지만 대기업의 재정 지원이 부족합니다.
- 문서 부족은 Nest 사용자에게 가장 큰 위협이 됩니다. 프레임워크는 다른 프레임워크와 뛰어난 상호 작용을 하지만 문서가 드물고 잠재적인 문제를 다루지 않습니다.
- Nest는 TypeScript 사용 및 Angular 측면에서 이점이 있습니다.
결론
NestJS는 개발자에게 큰 도움이 됩니다. 개발을 시작하려면 다음 작업만 수행하면 됩니다. 새 앱 만들기 가셔도 좋습니다. 이 프레임워크는 즉시 상당한 향상을 제공하는 동시에 적절한 앱 아키텍처를 설정하여 추가 단계를 수행하는 데 도움이 됩니다.
관리하기 쉽고 오래 지속되는 응용 프로그램을 생성하기 위해 최첨단 방법과 기술을 사용합니다. GraphQL, WebSocket에 연결하고 마이크로 서비스를 구성하는 데 사용할 수 있습니다.
댓글을 남겨주세요.