成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(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)問題:當(dāng)模塊多了怎么辦,怎么管理?如何劃分 Model、View、Controller? 等等。

所以,用 Node.js 做后端服務(wù)時(shí)我們會再包一層,解決架構(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 還有一點(diǎn)做的特別好,它不依賴任何一個 http 平臺,可以靈活的切換。

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

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

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

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

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

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

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

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

然后 express 或者別的平臺比如 fastify 只要繼承這個適配器的類,實(shí)現(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 !

默認(rèn)是 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 的時(shí)候可以指定對應(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號
精品久久久BBBB人妻| 宝宝都湿透了还嘴硬疼怎么回事 | 在线播放国产一区二区三区| 亚洲桃色AV无码| 亚洲色成人网站www观看入口| 亚洲欧洲AV综合色无码| 亚洲日韩中文无码久久| 白丝制服被啪到喷水很黄很暴力| 办公室的交易HD在线观看| 狠狠色噜噜狠狠亚洲AV| 精品无码久久久久国产| 日产无码精品一区二区三区| 色欲av蜜臀一区二区三区多少| 区二区三区在线 | 欧洲| 日韩精品无码一区二区视频 | 免费一对一刺激互动聊天软件| 欧美综合在线激情专区| 日日噜狠狠噜天天噜AV| 小浪货腿张开水好多呀H| 亚洲精品无码AV专区最新| 18禁白丝JK自慰喷水无码| BGMBGMBGM欧美XX| 粉嫩小泬无遮挡久久久久久小说| 国产黄A三级三级三级| 国产又爽又粗又猛的视频| 啪啪啪1000免费观看| 无码综合天天久久综合网色吧影院| 51VV社区视频在线视频观看| 国产GAYSEXCHINA男| 精产国品一二三产区区| 日韩A人毛片精品无人区乱码| 一二三四视频社区3在线高清| 7777奇米四色眼影| 精精国产XXXX视频在线播放| 日本熟妇毛茸茸XXXX| 又爽又黄又无遮挡激情视频免费| 国产美女被遭强高潮网站免费 | CHINESE国产AVVIDEOXXXX实拍| 护士HD老师FREE性ⅩⅩⅩⅩ| 久久香港三级台湾三级播放| 人妻丰满AV无码久久不卡| 无码喷水一区二区浪潮AV| MM1313又粗又大受不了| 国产美女被遭强高潮免费网站 | 欧美内射AAAAAAXXXXX| 少妇人妻无码专区视频| 亚洲AV无码一区二区三区DV| 亚洲日韩精品无码专区网址| 国产精品99久久99久久久| 久久夜色撩人精品国产| 亚洲成A人片在线播放| 国产精品久久久久9999无码 | 99精品久久久久久久婷婷| 久久精品夜夜夜夜夜久久| 日韩欧美精品有码在线| 99久久99久久免费精品蜜桃 | 欧美精品少妇XXXXX喷水| 一边捏奶头一边高潮视频| 精品国产一区二区AV片| 羞羞午夜爽爽爽爱爱爱爱人人人| 成人精品免费AV不卡在线观看| 国产精品无码不卡一区二区三区| 日韩精品久久久久久久电影蜜臀| AV人摸人人人澡人人超碰小说 | 精品国产一区二区三区不卡| 亚洲AV成人无码精品网站| 国产精品女上位好爽在线| 人人妻人人澡人人爽欧美一区双| 无码人妻精品一区二区桃蜜 | av 无码av 丰满av| 男女嘿咻激烈爱爱动态图| 在线观看大片免费播放器| 久久中文字幕人妻丝袜系列| 亚洲中文久久久久久精品国产| 公愆憩止痒玉米地使用方法| 久久人人爽人人爽人人片DVD| 少妇饥渴偷公乱第一章全文| 亚洲综合色在线观看一区二区| 动漫AV纯肉无码AV在线播放| 久久久久久精品成人网站| 性色AV无码一区二区三区人妻| 国产乱了真实在线观看| 午夜DJ在线观看免费完整版社区 | 娇妻被黑人杂交下呻吟| 亚洲精品二区国产综合野狼| 成在人线AV无码免费高潮水老板| 久久亚洲AV无码精品色午夜麻| 亚洲自国产拍揄拍| 久久精品人人看人人爽| 亚洲第一无码AV播放器下载| 精品国产亚洲一区二区三区| 亚洲乱码一区二三四区AVA | 成人无码午夜在线观看| 欧洲人激情毛片无码视频| 99久久国产综合精品五月天喷水| 美女扒开裤衩让男人桶爽| 69日本人XXXX16-18| 欧美乱大交XXXXX潮喷| CHⅠNESE性旺盛老熟女| 日本人妻和黑人又粗又长又黄| 哒哒哒WWW在线影院| 久久天堂AV女色优精品| 又黄又硬又湿又刺激视频免费 | 99精产国品一二产区在线| 欧美一区二区三区孕妇精品| 变态另类AV手机版天堂| 男女上下拱试看120秒| HD专干中国老太婆| 日韩A级无码免费视频| 国产精华最好的产品人V中文| 小货SAO边洗澡边CAO你动漫| 精品国产AⅤ一区二区三区V视界| 亚洲综合成人AⅤ在线网站| 免费无遮挡又黄又爽网站| FREE性玩弄少妇HD性老妇| 日日摸夜夜摸狠狠摸婷婷| 国产精品久久久久久免费软件 | 国产成人AV大片在线播放| 亚洲AV日韩AV一区谷露| 久久久精品中文字幕麻豆发布| 91精品人妻一区二区三区蜜桃 | 公粗挺进了我的密道在线观看| 人妻av无码一区二区三区| 丰满少妇大叫太大太粗| 亚洲AⅤ精品无码一区二区PRO| 久久久久久精品免费看SSS| 99久久精品免费观看国产| 少妇激情AV一区二区三区| 嘿咻嘿咻男女免费专区| 在线观看激情无码成人AV| 人人妻人人澡人人爽人人精品97| 国产成人精品三级在线影院| 亚洲 另类 日韩 制服 无码 | 久久亚洲精品无码AV红樱桃| MM131美女视频毛片| 玩弄白嫩少妇XXXXX性| 久久WWW成人免费网站| JAPANESEⅩⅩⅩHD日本| 无码人妻AV免费一区二区三区 | 99久久久无码国产精品9| 熟妇人妻精品一区二区视频免费的| 黑人与亚洲美女ⅩXXX| 自拍亚洲欧美在线成电影| 少妇人妻无码精品视频APP| 精品一区二区三区免费视频| 亚洲精品乱码久久久久久中文字幕 | 成在人线AV无码免观看麻豆| 亚洲AV综合色区无码另类小说| 免费播放片高清在线视频| 在线V观看免费国岛国片| 上面一个奶下面一个顶是什么字| 激情97综合亚洲色婷婷五| GAY亚洲男男GV在线观看网站| 无码人妻丰满熟妇区五十路| 麻豆国产蜜桃臀视频在线观看| 丰满熟妇VIDEOSXXXX| 亚洲愉拍自拍欧美精品APP| 人妻妺妺窝人体色WWW仙踪林 | 亚洲人成网站18禁止大| 欧美性插B在线视频网站| 国精产品W灬源码1688伊| 99国产精品欧美一区二区三区| 无码一区二区三区亚洲人妻| 麻豆国产精品VA在线观看| 国产刺激男女视频在线| 与亲女洗澡时伦了| 为了升职丈夫把我献给他们领导 | 又色又爽又黄的裸体美女图片 | 抱着边走边撞水流了一地的水| 无罩大乳的熟妇正在播放| 久久久久久久亚洲AV无码| 国产99视频精品免费视看6| 伊人久久大香线蕉AV波多野结衣| 免费人成在线观看网站品善网| 国产成人一区二区三区视频免费 | 99RIAV国产精品视频| 亚洲AV无码专区色爱天堂老鸭| 日本丰满人妻XXXXXHD| 久久综合香蕉国产蜜臀AV | 精品v内射66偷窥| 多毛小姐BGMBGMBGM| 最新的国产成人精品2022| 亚洲AV无码一区二区三区久久精| 日本大学学校AAAAA| 六月丁香婷婷色狠狠久久| 国产人与禽ZOZ0性伦| 成人Α片免费视频在线观看| 中文字幕久无码免费久久| 亚洲成AV人片一区二区三区| 视频免费网站入口| 欧美人与性囗牲恔配视频| 久久久久99精品成人片三人毛片 | 男男开小嫩苞好深啊H窑子开| 国色天香精品一卡2卡3卡 | 亚洲国产综合无码一区二区BT下| 色猫咪AV在线网址| 拗女稀缺资源一区二区| 久久精品国产一区二区三区不卡| VODAFONEWIFI暴力| 在线精品自偷自拍无码中文|