>웹 프론트엔드 >JS 튜토리얼 >노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

青灯夜游
青灯夜游앞으로
2022-03-02 19:54:302662검색

이 기사에서는 node프레임워크 Nest.js가 느슨하게 결합된 방식으로 Express를 통합하는 방법에 대해 설명하겠습니다. 도움이 되기를 바랍니다.

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

Nodejs은 포트 수신, http 요청 처리, 응답 반환 등의 작업을 주로 수행하는 http 모듈을 제공합니다.

그러나 http 모듈의 api는 너무 원시적이며 이를 기반으로 직접 요청과 응답을 처리하는 것이 번거로워서 express 등의 라이브러리로 캡슐화하겠습니다.

이 레이어가 하는 일은 다양한 시나리오의 요구 사항을 충족하기 위해 요청 및 응답에 대한 많은 요청 및 응답 처리 방법을 추가하고 라우팅을 처리하는 것입니다. 또한 이러한 종류의 코드를 쉽게 재사용할 수 있도록 미들웨어 호출 체인도 제공합니다. 미들웨어 콜 체인의 모델을 양파 모델이라고 합니다.

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

그러나 이 레이어는 아키텍처 문제를 해결하지 못합니다. 모듈이 너무 많으면 어떻게 해야 하며 어떻게 관리해야 할까요? 모델, 뷰, 컨트롤러를 어떻게 나누나요? 등.

그래서 Node.js를 백엔드 서비스로 사용할 때 아키텍처 문제를 해결하기 위해 또 다른 레이어를 포함할 예정입니다. 이 레이어의 프레임워크에는 eggjs(ant), midwayjs(Taobao) 및 Nestjs(외국인)가 포함됩니다.

nestjs가 그중 최고입니다.

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

이 레이어의 맨 아래 레이어는 express, koa 등입니다. 이는 해당 http 프레임워크를 기반으로 추가로 아키텍처 문제를 해결합니다.

그리고 Nestjs는 특히 좋은 기능을 수행하며 http 플랫폼에 의존하지 않으며 유연하게 전환할 수 있습니다.

그렇다면 Nestjs는 기본 플랫폼 전환을 어떻게 달성합니까?

react가 어떻게 vdom을 캔버스, dom 및 네이티브로 렌더링하는지 생각해 보세요.

통합 인터페이스 레이어를 정의하면 다양한 플랫폼의 렌더링 로직이 이러한 인터페이스를 구현합니다. 이 모드를 어댑터 모드라고 합니다.

어댑터 모드는 제3자가 구현한 기능을 사용할 때 이에 직접 의존하지 않고, 제3자가 이 인터페이스 계층에 적응할 수 있도록 인터페이스 계층을 정의하는 것을 의미합니다. 이러한 방식으로 이 인터페이스 계층에 적응하는 모든 솔루션을 통합할 수 있으며 솔루션을 유연하게 전환할 수 있습니다.

Nest.js는 기본 http 플랫폼을 위한 인터페이스 계층(HttpServer)을 제공하고 여러 메서드를 정의합니다.

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

ts의 인터페이스는 단순화하기 위해 모든 메서드를 구현해야 하기 때문에 추상 클래스 AbstractHttpAdapter의 레이어이며 추상으로 구현되어야 하는 메서드를 정의합니다.

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

그런 다음 Express 또는 fastify와 같은 다른 플랫폼은 어댑터 클래스를 상속하고 추상 메서드만 구현하면 Nest.js에 연결할 수 있습니다.

예를 들어 ExpressAdapter:

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

또는 FastifyAdapter:

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

이 로직은 각각 platform-express 및 platform-fastify 패키지에 배치됩니다.

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

Nest.js 코드의 첫 번째 줄은 create를 호출하는 것입니다.

노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

create는 서비스 생성을 위한 httpAdapter:

1노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

기본값은 express입니다.

1노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

이런 식으로 나중에 호출되는 요청 및 응답 메서드는 결국 express가 됩니다.

예를 들어 컨트롤러에서 @Request 데코레이터를 사용하여 reqeust 개체를 삽입한 다음 다양한 reqeust 메서드를 호출할 수 있습니다.

import { Controller, Get, Request } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(@@Request() request: Request): string {
    return 'This action returns all cats';
  }
}

인터페이스 외부에서 일부 플랫폼별 메서드를 호출하려는 경우 Nest.js도 이를 지원하고 @Req를 사용하여 다음을 삽입합니다.

import { Controller, Get, Req } from '@nestjs/common';

@Controller('cats')
export class CatsController {
  @Get()
  findAll(@@Req() request: Request): string {
    return 'This action returns all cats';
  }
}

이런 방식으로 삽입되는 것은 특정 메서드의 기본 요청 객체입니다. Express와 같은 플랫폼에서는 모든 메소드를 직접 사용할 수 있습니다.

또한 Express 플랫폼의 특정 API를 실제로 사용하고 싶다면 NestFactory.create에서 해당 유형 매개변수를 지정하여 해당 유형 프롬프트 및 확인을 수행할 수 있습니다.

1노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

그러나 이는 특정 플랫폼과 결합될 것이므로 플랫폼을 전환하지 않을 것이라고 확신하지 않는 한 이를 권장하지 않습니다.

http 플랫폼이 이 작업을 수행하고 마찬가지로 websocket 플랫폼도 동일한 작업을 수행합니다.

어댑터를 통해 Socketio 및 websocket에 연결되고 유연하게 전환될 수 있는 통합 인터페이스를 정의합니다.

1노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

그림 다음, Nest .js는 http 및 websocket 플랫폼을 처리합니다.

1노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!

요약

Node.js는 포트를 수신하고 요청 응답을 처리하는 http 모듈을 제공하지만 API가 너무 원시적이므로 하나의 레이어로 마무리하겠습니다. express 레이어는 더 유용한 요청 및 응답 API를 제공하지만 이 레이어는 아키텍처 문제를 해결하지 못합니다. MVC, IOC 및 기타 아키텍처를 도입하려면 Egg.js, Midway.js 및 Nest js를 사용하여 다른 레이어를 포함해야 합니다. 더 높은 수준의 백엔드 프레임워크 중 Nest.js가 최고입니다.

Nest.js는 기본 http 플랫폼과 통합하기 위해 특별한 디자인을 만들었습니다. 이는 어댑터 모드를 사용하여 기본 플랫폼이 적응할 수 있는 인터페이스 레이어를 제공하므로 다양한 http 플랫폼을 유연하게 전환할 수 있습니다.

그러나 플랫폼별 API 사용도 지원합니다. 예를 들어 @Req를 사용하여 컨트롤러에 기본 요청 객체를 삽입할 수 있으며, 컨테이너를 생성할 때 해당 플랫폼의 유형 매개변수를 전달할 수도 있습니다.

Nest.js는 기본적으로 Express를 사용하지만 다른 것으로 유연하게 전환할 수 있기 때문에 Express를 사용한다고 말하는 것은 전적으로 옳지 않습니다. 이것이 어댑터 패턴의 아름다움입니다.

노드 관련 지식을 더 보려면 nodejs 튜토리얼을 방문하세요!

위 내용은 노드 프레임워크 Nest.js가 Express를 느슨한 결합과 통합하는 방법에 대해 이야기해 보겠습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.cn에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제