Nest.js 소개: 더 높을수록
매튜 타이슨
소프트웨어 설계자, InfoWorld |
Next.js와 혼동하지 마십시오. Nest.js는 JavaScript 서버 기술에 대한 새롭고 독특한 접근 방식입니다. Express 또는 Fastify와 같은 친숙한 서버와 더 높은 수준의 애플리케이션 설계를 강화하고 단순화하는 데 적합한 여러 가지 유용한 추상화 계층이 필요합니다. 프로그래밍 패러다임, 1차 TypeScript 지원, 종속성 주입과 같은 내장 기능의 독특한 조합 덕분에 Nest.js는 지난 몇 년 동안 꾸준히 인기를 얻었습니다.
Nest.js는 JavaScript 생태계에 대한 흥미로운 기여이며 주목할 가치가 있습니다. 서버측 JavaScript 및 TypeScript로 작업할 때 명심해야 할 훌륭한 도구입니다.
이 기사에서는 라우팅, 컨트롤러, 생산자(종속성 주입) 및 경비원을 통한 인증을 포함한 예시를 통해 Nest.js를 둘러볼 것입니다. 또한 Nest.js 모듈 시스템에 대해서도 이해하게 됩니다.
우리의 예는 파스타 레시피 목록을 관리하는 데 사용되는 애플리케이션입니다. 실제 데이터 세트를 관리하는 종속성 주입 서비스와 모든 레시피를 나열하거나 ID별로 단일 레시피를 복구하는 데 사용할 수 있는 RESTful API가 포함됩니다. 또한 새로운 레시피를 추가하기 위해 간단하게 인증된 PUT 엔드포인트를 설정하겠습니다.
새 프로젝트를 스캐폴딩하는 것부터 시작해 보겠습니다. 그런 다음 예제를 살펴보겠습니다.
Nest.js 명령줄 인터페이스를 사용하여 $ npm install -g @nestjs/cli를 사용하여 전역적으로 Nest를 설치하는 것부터 시작하여 빠른 애플리케이션 레이아웃을 설정할 수 있습니다. create 명령 외에도 Nestjs에는 재사용 가능한 디자인을 공유하기 위한 생성과 같은 유용한 기능이 포함되어 있습니다. 전 세계적으로 설치하면 그 이상에 액세스할 수 있습니다.
이제 다음을 사용하여 새 애플리케이션을 만들 수 있습니다. $nest new iw-nest. 원하는 패키지 관리자(npm, Yarn 또는 pnpm)를 선택할 수 있습니다. 이 데모에서는 pnpm을 사용하겠습니다. 상관없이 과정은 동일합니다.
새로운 /iw-nest 디렉토리로 변경하고 $ pnpm run start를 사용하여 개발 서버를 시작합니다. localhost:3000을 방문하여 애플리케이션이 실행 중인지 확인할 수 있습니다. 여기서 "Hello, World!"가 표시되어야 합니다. 메시지. 이 메시지는 iw-nest/src/app.controller.ts에서 전송됩니다. 해당 파일을 보면 주입된 서비스를 사용하고 있음을 알 수 있습니다. 목록 1에 표시된 대로 레시피 목록을 반환하는 새 컨트롤러(src/recipes.controller.ts)를 만들어 보겠습니다.
목록 1에서는 Nest.js의 라우팅 기본 사항을 보여줍니다. /recipes 경로를 사용하여 클래스를 컨트롤러로 정의하기 위해 @Controller('recipes') 주석을 사용하는 것을 볼 수 있습니다. getRecipes() 메서드에는 @Get()을 사용하여 GET 메서드를 처리하도록 주석이 추가되었습니다.
현재 이 컨트롤러는 /recipes GET을 하드 코딩된 응답 문자열에 매핑합니다. Nest.js가 이를 제공하기 전에 모듈에 새 컨트롤러를 등록해야 합니다. 모듈은 애플리케이션 코드를 구성하는 데 사용되는 Nest의 또 다른 중요한 개념입니다. 우리의 경우 목록 2에 표시된 대로 /src/app.module.ts를 열고 컨트롤러를 추가해야 합니다.
Nest.js의 종속성 주입 프레임워크는 Java 생태계의 Spring을 연상시킵니다. 내장된 종속성 주입만으로도 Nest.js는 다른 부가 기능 없이도 고려할 가치가 있습니다.
서비스 공급자를 정의하고 이를 컨트롤러에 연결하겠습니다. 이는 애플리케이션을 레이어로 구성하는 깔끔한 방법입니다. 목록 3에서 새로운 서비스 클래스인 /src/recipes.service.ts를 볼 수 있습니다.
이 서비스 제공자를 사용하려면 목록 4에 표시된 대로 app.module.ts 파일에도 추가해야 합니다.
모듈은 애플리케이션을 구성하는 좋은 방법입니다. 이는 논리적 그룹화 메커니즘으로 작동하여 가장 기본적인 모듈이 명확하게 정의되고 다른 모듈은 이에 종속되는 계층 구조를 제공할 수 있습니다.
이제 목록 5에 표시된 대로 RecipesController에서 서비스를 사용할 수 있습니다. 종속성 주입을 처음 사용하는 경우 추가 작업이 많이 필요한 것처럼 보일 수 있습니다. 그러나 표준화된 방식으로 애플리케이션 전체에서 클래스를 정의하고 사용하는 기능은 시스템이 성장함에 따라 애플리케이션 아키텍처에 큰 도움이 될 수 있습니다.