久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

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

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

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

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

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

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

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

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

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

nestjs 是其中最優(yōu)秀的一個:

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

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

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

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

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

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

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

定義一層統(tǒng)一的接口,各種平臺的 render 邏輯實現(xiàn)這些接口。這種模式叫做適配器模式。

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

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

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

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

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

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

比如 ExpressAdapter:

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

或者 FastifyAdapter:

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

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

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

Nest.js 第一行代碼是調(diào)用 create:

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

create 里就會選擇一種 httpAdapter 來創(chuàng)建服務(wù):

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

默認是 express:

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

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

比如在 controller 里可以用 @Request 裝飾器來注入 reqeust 對象,就可以調(diào)用 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';   } }

如果你想調(diào)用一些接口之外的特定平臺的方法的話,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 的時候可以指定對應(yīng)的類型參數(shù),這樣就能做相應(yīng)的類型提示和檢查了:

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

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

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

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

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

圖解下 Nest.js 關(guān)于 http 、websocket 平臺的處理:

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

總結(jié)

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
欧美va亚洲va日韩∨a综合色| 国产毛片精品| 国产高潮在线| 亚洲美女久久精品| 婷婷激情久久| 蜜桃91丨九色丨蝌蚪91桃色| 日韩国产欧美视频| 久久久精品国产**网站| 日本免费久久| 在线观看视频免费一区二区三区| 亚洲午夜久久| 在线看片一区| 久久不卡日韩美女| 成人日韩在线观看| 蜜臀a∨国产成人精品| 国产精品美女午夜爽爽| 日韩在线高清| 亚洲精品一级| 成人一区不卡| 亚洲免费网址| 荡女精品导航| 丝瓜av网站精品一区二区| 国产精品.xx视频.xxtv| 久久久久久久久丰满| 热久久免费视频| 久久精品一区二区三区中文字幕| 成人国产综合| 蜜桃av一区二区三区电影| 欧美交a欧美精品喷水| 亚洲欧美综合| 国产精品亚洲产品| 国产亚洲精品v| 国产videos久久| 亚洲精品极品| 欧美日韩在线网站| 国产精品hd| 午夜在线一区| 人在线成免费视频| 久久国产人妖系列| 欧美日韩视频| 国产盗摄——sm在线视频| 99国产精品视频免费观看一公开| 国产美女久久| 视频一区视频二区中文字幕| 国产精品精品国产一区二区| 日本va欧美va精品发布| 婷婷综合亚洲| 97精品国产| 国产精品男女| 日欧美一区二区| 婷婷亚洲五月色综合| 精品国产成人| 日韩欧美高清一区二区三区| 欧美成人a交片免费看| 日本精品另类| 久久国产精品毛片| 久久精品高清| 日韩av中文在线观看| 亚洲深夜av| 99久久九九| 国产成人久久| 国产欧美日韩在线一区二区| 影音先锋国产精品| 色在线中文字幕| 国产一区二区三区探花| 国产亚洲一区| 亚洲精品麻豆| 99国产精品久久久久久久| 四虎成人av| 国产精品毛片视频| 日韩区欧美区| 丝袜亚洲另类欧美| 中文字幕人成乱码在线观看 | 久久久精品国产**网站| 视频一区日韩| 自拍自偷一区二区三区| 玖玖精品视频| 蜜桃视频一区二区三区在线观看 | 999国产精品| 成人小电影网站| 国产一区二区三区久久久久久久久| 亚洲精品亚洲人成在线观看| 亚洲神马久久| 亚洲精品福利电影| 97精品国产福利一区二区三区| 蜜桃久久久久| 国产激情欧美| 精品国产亚洲一区二区在线观看| 欧美1区二区| 91日韩免费| 亚洲www啪成人一区二区| 91看片一区| 国产99久久久国产精品成人免费| 欧美午夜精品一区二区三区电影| 欧美91福利在线观看| 91久久在线| 亚洲精品伊人| 国产精品密蕾丝视频下载| 91在线成人| 国产精品视频3p| 国产一区二区三区四区五区| 天堂av在线| 午夜久久影院| 亚洲精品系列| 国产精品红桃| 国产中文在线播放| 国产精品99一区二区| 模特精品在线| 亚洲精品欧洲| 乱一区二区av| 老司机免费视频一区二区| 美女一区网站| 视频在线观看91| 中文字幕中文字幕精品| 伊人久久亚洲热| 亚久久调教视频| 久久中文在线| 999久久久91| 只有精品亚洲| 欧美激情aⅴ一区二区三区 | 亚洲精品2区| 蜜臀av一区二区三区| 国产日韩一区| 日韩在线精品| 蜜臀av在线播放一区二区三区| 蜜臀91精品一区二区三区| 日韩av一二三| 国产成人精品一区二区三区视频| 国产亚洲一区二区手机在线观看| 久久国产精品亚洲77777| 国产欧美二区| 999久久久国产精品| 日韩中文字幕亚洲一区二区va在线| 欧美在线日韩| 在线日韩电影| 欧美一区91| 久久婷婷激情| 日韩欧美在线精品| 日韩精品久久久久久久电影99爱| 亚洲人成网77777色在线播放| 日韩欧美精品一区二区综合视频| 乱一区二区av| 玖玖玖国产精品| 精品视频91| 综合色就爱涩涩涩综合婷婷| 精品无人区麻豆乱码久久久| 亚洲欧美日韩国产综合精品二区| 国产精品片aa在线观看| 蜜臀91精品国产高清在线观看 | 中文字幕一区二区三区日韩精品| 国产精品三p一区二区| 欧美.日韩.国产.一区.二区 | 国产九九精品| 亚洲女同中文字幕| 欧美日韩精品一区二区三区视频| 99久久精品费精品国产| 国产精品啊v在线| 午夜国产精品视频| 久久精品国产99国产精品| 免费人成黄页网站在线一区二区 | 精品国产不卡一区二区| 中文字幕乱码亚洲无线精品一区| 一本大道色婷婷在线| 国产精品7m凸凹视频分类| 国产毛片一区二区三区| 欧美 日韩 国产精品免费观看| 亚洲资源网站| 亚洲成av在线| 美女国产精品久久久| 综合视频一区| 九色精品91| 黑人精品一区| 欧美aaaaaa午夜精品| 亚洲欧美一级| 亚洲免费激情| 久久久久国产| 精品国产精品久久一区免费式 | 欧美综合另类| 国产精品99一区二区三区| 欧美日韩亚洲三区| 亚洲婷婷丁香| 国产精品日本| 激情综合自拍| 久久国产中文字幕| 捆绑调教日本一区二区三区| 国产高清亚洲| 国产精品一区2区3区| 日韩不卡在线观看日韩不卡视频| 日韩专区欧美专区| 国产一区成人| 夜久久久久久| 婷婷亚洲五月| 高清久久一区| 国产66精品| 精品久久久网| 国产一区调教| 国产成人在线中文字幕| 精品国产黄a∨片高清在线| 久久精品国产亚洲aⅴ| 精品一区视频|