gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

聊聊node框架 Nest.js怎么松耦合地整合 Express !

本篇文章帶大家聊聊node框架 Nest.js是如何松耦合地整合 Express 的,希望對大家有所幫助!

聊聊node框架 Nest.js怎么松耦合地整合 Express !

Node.js 提供了 http 模塊用于監聽端口、處理 http 請求,返回響應,這也是它主要做的事情。

但是 http 模塊的 api 太過原始,直接基于它來處理請求響應比較麻煩,所以我們會用 express 等庫封裝一層。

這一層做的事情就是給 request 和 response 添加了很多處理請求響應的方法,滿足各種場景的需求,并且對路由做了處理,而且,也提供了中間件的調用鏈便于復用一些代碼,這種中間件的調用鏈叫做洋蔥模型。

聊聊node框架 Nest.js怎么松耦合地整合 Express !

但這一層沒有解決架構問題:當模塊多了怎么辦,怎么管理?如何劃分 Model、View、Controller? 等等。

所以,用 Node.js 做后端服務時我們會再包一層,解決架構問題,這一層的框架有 eggjs(螞蟻的)、midwayjs(淘寶的)、nestjs(國外的)。

nestjs 是其中最優秀的一個:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

聊聊node框架 Nest.js怎么松耦合地整合 Express !

聊聊node框架 Nest.js怎么松耦合地整合 Express !

這一層的底層還是 express、koa 等,它只是在那些 http 框架的基礎上額外解決了架構問題。

而且 nestjs 還有一點做的特別好,它不依賴任何一個 http 平臺,可以靈活的切換。

那么 nestjs 是怎么做到底層平臺的切換的呢?

想想 react 是怎么做到把 vdom 渲染到 canvas、dom、native 的?

定義一層統一的接口,各種平臺的 render 邏輯實現這些接口。這種模式叫做適配器模式。

適配器模式是當用到第三方實現的某個功能時,不直接依賴,而是定義一層接口,讓第三方去適配這層接口。這樣任何一個適配了這層接口的方案都能集成,也能夠靈活的切換方案。

Nest.js 對底層的 http 平臺就是提供了一層接口(HttpServer),定義了一堆用到的方法:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

因為 ts 的 interface 必須實現所有的方法才行,為了簡化,又繼承了一層抽象類 AbstractHttpAdapter,把需要實現的方法定義成 abstract 的。

聊聊node框架 Nest.js怎么松耦合地整合 Express !

然后 express 或者別的平臺比如 fastify 只要繼承這個適配器的類,實現其中的抽象方法,就能接入到 Nest.js 里:

比如 ExpressAdapter:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

或者 FastifyAdapter:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

這些邏輯分別放在 platform-express 和 platform-fastify 包里:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

Nest.js 第一行代碼是調用 create:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

create 里就會選擇一種 httpAdapter 來創建服務:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

默認是 express:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

這樣,之后調用的 request 和 response 的方法最終就都是 express 的了。

比如在 controller 里可以用 @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 的原生 request 對象,就可以直接用它的所有方法。

此外,如果真的要用 Express 平臺的特定 api 的話,在 NestFactory.create 的時候可以指定對應的類型參數,這樣就能做相應的類型提示和檢查了:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

但是這樣就和特定平臺耦合了,除非是確定不會切換平臺,否則不建議這么做。

http 平臺是這么做的,同理,websocket 平臺也是這樣的:

定義了一層統一的接口,通過適配器的方式分別接入 socketio 和 websocket,可以靈活的切換:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

圖解下 Nest.js 關于 http 、websocket 平臺的處理:

聊聊node框架 Nest.js怎么松耦合地整合 Express !

總結

Node.js 提供了 http 模塊用來監聽端口、處理請求響應,但是它的 api 過于原始,所以我們會包一層,在 express 這一層提供

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
欧美日韩dvd| 999精品视频在线| 日本国产一级片| 97公开免费视频| 中文字幕一区二区三区四区在线视频| 轻点好疼好大好爽视频| 狠狠干视频网站| www.亚洲成人网| 分分操这里只有精品| 无码专区aaaaaa免费视频| 亚洲色成人www永久在线观看 | 免费观看成人网| 国产精品久久久久9999小说| 免费男同深夜夜行网站| 日日噜噜夜夜狠狠| 亚洲最新免费视频| 精品免费久久久久久久| 国产妇女馒头高清泬20p多| 免费观看国产精品视频| 国产真实乱子伦| 日本中文字幕影院| 欧美a级免费视频| 日日碰狠狠添天天爽超碰97| 男人的天堂日韩| 日韩av影视大全| koreanbj精品视频一区| 国产欧美一区二| 欧美日韩激情四射| www日韩在线观看| 国产免费色视频| 日韩欧美国产免费| 99精品视频国产| 亚洲美免无码中文字幕在线 | 丰满人妻一区二区三区53号 | 中文字幕第66页| 国产午夜福利100集发布| 激情内射人妻1区2区3区| 美女在线免费视频| 成人精品视频一区二区| 欧美一级中文字幕| 邪恶网站在线观看| 91九色在线观看视频| 色婷婷激情视频| 老头吃奶性行交视频| 国产人妻人伦精品| 一级黄色片国产| 黄色一级大片在线观看| 免费网站在线观看视频| 亚洲精品成人在线播放| 苍井空浴缸大战猛男120分钟| 中文字幕在线中文| 国产精品亚洲天堂| 色呦色呦色精品| 看欧美ab黄色大片视频免费| 免费高清一区二区三区| 97超碰免费观看| 亚洲在线观看网站| 亚洲免费999| 天天操狠狠操夜夜操| 搡女人真爽免费午夜网站| www黄色日本| 中文字幕无码精品亚洲35| 大西瓜av在线| 成人免费性视频| 国产无限制自拍| 黄色一级片播放| 日本免费不卡一区二区| 亚洲熟妇无码一区二区三区| av久久久久久| 成品人视频ww入口| 热99这里只有精品| 国产成人a亚洲精v品无码| 久久久久久久中文| 成人在线激情网| 成人亚洲免费视频| 国产日产欧美一区二区| 日本阿v视频在线观看| 男人插女人视频在线观看| 97国产在线播放| 国产xxxxx视频| 手机av在线免费| 粉嫩av一区二区三区天美传媒| 桥本有菜av在线| 欧美综合在线播放| 亚洲人辣妹窥探嘘嘘| 爱豆国产剧免费观看大全剧苏畅| 精品综合久久久久| 欧美一区二区激情| 老司机午夜av| 中文字幕超清在线免费观看| 黄页网站大全在线观看| 欧美精品性生活| 日本中文字幕一级片| 高清在线观看免费| 亚洲天堂av一区二区| 久久成人福利视频| 亚洲国产精品三区| 免费特级黄色片| www.色欧美| 日本精品免费在线观看| www.桃色.com| 中文字幕乱码人妻综合二区三区| 911av视频| 免费黄色特级片| 国产精品国产三级国产专区51| 日av中文字幕| 国产精品一线二线三线| 天堂av.com| 青青青在线视频免费观看| 久久www视频| 在线观看中文av| 久久国产这里只有精品| 国产高清精品在线观看| 日韩中文字幕亚洲精品欧美| wwwxxx黄色片| 久久人人爽人人爽人人av| 日韩av.com| 手机版av在线| 亚洲综合在线网站| 欧美日韩亚洲第一| 国产v片免费观看| 日本免费成人网| 五月天在线免费视频| 深爱五月综合网| 污污视频网站在线| 天天干天天玩天天操| 丁香婷婷激情网| 中文字幕第80页| 四季av一区二区| 99视频免费播放| 欧美成人xxxxx| www.com毛片| 成人小视频在线看| 少妇性l交大片| 色综合色综合色综合色综合| 欧美日韩亚洲一二三| 国产成人久久777777| 激情五月亚洲色图| 日本中文字幕二区| www.桃色.com| 日本a在线天堂| 日韩国产一级片| 日批视频在线免费看| www国产黄色| 亚洲 国产 图片| 看一级黄色录像| 欧美日韩黄色一级片| 自拍偷拍 国产| 思思久久精品视频| 国产成人一区二区三区别| 国产欧美日韩网站| 国产xxxxx视频| 免费观看中文字幕| 日韩精品一区在线视频| 精品国产成人av在线免| 91视频这里只有精品| 久久久久久久久久伊人| 欧美极品欧美精品欧美图片| 色呦色呦色精品| 成年人网站国产| a在线观看免费视频| 日韩精品手机在线观看| 无码无遮挡又大又爽又黄的视频| 亚洲va在线va天堂va偷拍| 国产精品无码电影在线观看| 国产情侣av自拍| 被灌满精子的波多野结衣| 国产一级片黄色| 91动漫在线看| 国产美女视频免费看| 精品少妇人妻av免费久久洗澡| 欧美一级xxxx| 成年人小视频网站| 日韩一区二区高清视频| 五月天视频在线观看| 人妻有码中文字幕| 国产a级黄色大片| 最近中文字幕一区二区| 久久久久久久中文| 精品少妇人妻av一区二区| 午夜视频在线瓜伦| 国产免费一区二区视频| 深爱五月综合网| 五月婷婷六月丁香激情| 久热免费在线观看| 欧美国产日韩激情| 欧美视频在线第一页| 天天干天天操天天干天天操| 男操女免费网站| 毛葺葺老太做受视频| 日本欧美黄色片| 国产美女在线一区| 天堂av在线中文| 国产免费xxx| 日本特黄在线观看| www激情五月| 桥本有菜av在线| 国产日产欧美一区二区| 99re8这里只有精品| 四虎4hu永久免费入口|