이 기사에서는 node프레임워크 Nest.js가 느슨하게 결합된 방식으로 Express를 통합하는 방법에 대해 설명하겠습니다. 도움이 되기를 바랍니다.
Nodejs은 포트 수신, http 요청 처리, 응답 반환 등의 작업을 주로 수행하는 http 모듈을 제공합니다.
그러나 http 모듈의 api는 너무 원시적이며 이를 기반으로 직접 요청과 응답을 처리하는 것이 번거로워서 express 등의 라이브러리로 캡슐화하겠습니다.
이 레이어가 하는 일은 다양한 시나리오의 요구 사항을 충족하기 위해 요청 및 응답에 대한 많은 요청 및 응답 처리 방법을 추가하고 라우팅을 처리하는 것입니다. 또한 이러한 종류의 코드를 쉽게 재사용할 수 있도록 미들웨어 호출 체인도 제공합니다. 미들웨어 콜 체인의 모델을 양파 모델이라고 합니다.
그러나 이 레이어는 아키텍처 문제를 해결하지 못합니다. 모듈이 너무 많으면 어떻게 해야 하며 어떻게 관리해야 할까요? 모델, 뷰, 컨트롤러를 어떻게 나누나요? 등.
그래서 Node.js를 백엔드 서비스로 사용할 때 아키텍처 문제를 해결하기 위해 또 다른 레이어를 포함할 예정입니다. 이 레이어의 프레임워크에는 eggjs(ant), midwayjs(Taobao) 및 Nestjs(외국인)가 포함됩니다.
nestjs가 그중 최고입니다.
이 레이어의 맨 아래 레이어는 express, koa 등입니다. 이는 해당 http 프레임워크를 기반으로 추가로 아키텍처 문제를 해결합니다.
그리고 Nestjs는 특히 좋은 기능을 수행하며 http 플랫폼에 의존하지 않으며 유연하게 전환할 수 있습니다.
그렇다면 Nestjs는 기본 플랫폼 전환을 어떻게 달성합니까?
react가 어떻게 vdom을 캔버스, dom 및 네이티브로 렌더링하는지 생각해 보세요.
통합 인터페이스 레이어를 정의하면 다양한 플랫폼의 렌더링 로직이 이러한 인터페이스를 구현합니다. 이 모드를 어댑터 모드라고 합니다.
어댑터 모드는 제3자가 구현한 기능을 사용할 때 이에 직접 의존하지 않고, 제3자가 이 인터페이스 계층에 적응할 수 있도록 인터페이스 계층을 정의하는 것을 의미합니다. 이러한 방식으로 이 인터페이스 계층에 적응하는 모든 솔루션을 통합할 수 있으며 솔루션을 유연하게 전환할 수 있습니다.
Nest.js는 기본 http 플랫폼을 위한 인터페이스 계층(HttpServer)을 제공하고 여러 메서드를 정의합니다.
ts의 인터페이스는 단순화하기 위해 모든 메서드를 구현해야 하기 때문에 추상 클래스 AbstractHttpAdapter의 레이어이며 추상으로 구현되어야 하는 메서드를 정의합니다.
그런 다음 Express 또는 fastify와 같은 다른 플랫폼은 어댑터 클래스를 상속하고 추상 메서드만 구현하면 Nest.js에 연결할 수 있습니다.
예를 들어 ExpressAdapter:
또는 FastifyAdapter:
이 로직은 각각 platform-express 및 platform-fastify 패키지에 배치됩니다.
Nest.js 코드의 첫 번째 줄은 create를 호출하는 것입니다.
create는 서비스 생성을 위한 httpAdapter:
기본값은 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에서 해당 유형 매개변수를 지정하여 해당 유형 프롬프트 및 확인을 수행할 수 있습니다.
그러나 이는 특정 플랫폼과 결합될 것이므로 플랫폼을 전환하지 않을 것이라고 확신하지 않는 한 이를 권장하지 않습니다.
http 플랫폼이 이 작업을 수행하고 마찬가지로 websocket 플랫폼도 동일한 작업을 수행합니다.
어댑터를 통해 Socketio 및 websocket에 연결되고 유연하게 전환될 수 있는 통합 인터페이스를 정의합니다.
그림 다음, Nest .js는 http 및 websocket 플랫폼을 처리합니다.
요약
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

node、nvm与npm的区别:1、nodejs是项目开发时所需要的代码库,nvm是nodejs版本管理工具,npm是nodejs包管理工具;2、nodejs能够使得javascript能够脱离浏览器运行,nvm能够管理nodejs和npm的版本,npm能够管理nodejs的第三方插件。

Vercel是什么?本篇文章带大家了解一下Vercel,并介绍一下在Vercel中部署 Node 服务的方法,希望对大家有所帮助!

node怎么爬取数据?下面本篇文章给大家分享一个node爬虫实例,聊聊利用node抓取小说章节的方法,希望对大家有所帮助!

node导出模块的两种方式:1、利用exports,该方法可以通过添加属性的方式导出,并且可以导出多个成员;2、利用“module.exports”,该方法可以直接通过为“module.exports”赋值的方式导出模块,只能导出单个成员。

安装node时会自动安装npm;npm是nodejs平台默认的包管理工具,新版本的nodejs已经集成了npm,所以npm会随同nodejs一起安装,安装完成后可以利用“npm -v”命令查看是否安装成功。

node中没有包含dom和bom;bom是指浏览器对象模型,bom是指文档对象模型,而node中采用ecmascript进行编码,并且没有浏览器也没有文档,是JavaScript运行在后端的环境平台,因此node中没有包含dom和bom。

Node.js 如何实现异步资源上下文共享?下面本篇文章给大家介绍一下Node实现异步资源上下文共享的方法,聊聊异步资源上下文共享对我们来说有什么用,希望对大家有所帮助!


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
