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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

而且 nestjs 還有一點(diǎn)做的特別好,它不依賴任何一個(gè) http 平臺(tái),可以靈活的切換。

那么 nestjs 是怎么做到底層平臺(tái)的切換的呢?

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

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

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

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

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

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

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

然后 express 或者別的平臺(tái)比如 fastify 只要繼承這個(gè)適配器的類,實(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 里就會(huì)選擇一種 httpAdapter 來創(chuàng)建服務(wù):

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

默認(rèn)是 express:

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

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

比如在 controller 里可以用 @Request 裝飾器來注入 reqeust 對(duì)象,就可以調(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)用一些接口之外的特定平臺(tái)的方法的話,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';   } }

這樣注入的就是特定平臺(tái)比如 express 的原生 request 對(duì)象,就可以直接用它的所有方法。

此外,如果真的要用 Express 平臺(tái)的特定 api 的話,在 NestFactory.create 的時(shí)候可以指定對(duì)應(yīng)的類型參數(shù),這樣就能做相應(yīng)的類型提示和檢查了:

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

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

http 平臺(tái)是這么做的,同理,websocket 平臺(tái)也是這樣的:

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

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

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

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

總結(jié)

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
制服丝袜人妻中文字幕在线| 国产成人AV无码永久免费| 我和子发生了性关系视频| 久久精品囯产精品亚洲| HEZYO加勒比 一本高手机在| 无码人妻一区二区三区精品视频| 久久精品中文字幕第一页| 成人乱子视频在线播放| 亚洲蜜桃无码一区二区三区| 全部极品AV娱乐盛宴| 波多野结衣人妻女教师4| 亚洲成在人线AⅤ中文字幕| 欧美极品在线观看| 国产精品成人无码久久久| 亚洲国产成人精品无码区花野真一| 老司机亚洲精品影院| 精品无人乱码高清在线观看| 国产男男Gay做受| YYYY11111少妇影院| 亚洲精品无码久久久影院相关影片 | 兽交ZOOSKOO| 精品国产三级A∨在线观看| 大白肥妇BBVBBW高潮| 亚洲高清中文字幕在线看不卡| 色黄啪啪网18以下勿进| 免费又黄又爽1000禁片| 国产成人一区二区精品视频| 亚洲中文字幕无码超碰| 午夜福利1000集合集92| 日产幕无线码三区在线| 欧美XXXXX高潮喷水麻豆| 国产成人无码AA精品一区| 野花高清在线观看免费| 色婷婷亚洲十月十月色天| 久久精品爆乳熟妇AV-区| 国产午夜成人无码免费| A毛片毛片看免费| 亚洲丁香五月天缴情综合| 无码中文字幕在线播放2| 男女无遮挡XX00动态图120秒| 久久久久久久97| 国产卡一卡二无线乱码| 国产成人亚洲精品无码高潮| 厨房人妻HD中文字幕69XX| AV在线播放日韩亚洲欧| 中文字幕久久久人妻无码| 曰韩无码AV片免费播放不卡| 亚洲国产成人高清在线观看| 亚洲AV一二三四区四色婷婷| 亚洲成AV人片在线播放无码| 熟妇毛耸耸浓密茂盛| 偷窥少妇久久久久久久久| 午夜男女爽爽影院免费视频下载 | 本免费AV无码专区一区| 中文乱码字幕高清一区二区| 18VIDEOSEX性欧美| XXXXX性BBBBB欧美| H工口全彩里番库18禁无遮挡| 餐桌下他深深顶撞H| 粉嫩大学生无套内射无码卡视频| 国产韩国精品一区二区三区| 高清欧美性猛XXXX黑人| 宝贝腿开大点我添添公视频免费| 丰满人妻熟妇乱又伦精品视频三 | 国产经典一区二区三区蜜芽| 国产综合久久亚洲综合| 久久久久久精品免费不卡| 男女后进式猛烈XX00动态图| 美女扒开裤衩让男人桶爽| FREE性丰满HD性欧美| 欧美日韩久久中文字幕| 熟妇高潮精品区一区二区三| 亚洲av无码一区二区三区dv | 狠狠色噜噜狠狠狠狠色综合网| 久久免费观看午夜成人网站| 欧美性爱一区二区三区| 无码一区二区三区老色鬼| 亚洲AV老熟妇在线观看| 正在播放强揉爆乳女教师| 非洲黑人妇女XXXXXHD| 国产精品久久久久精品三级| 国产乱妇无码大片在线观看| 国内精品久久久久久久影视麻豆| 狠狠色丁香婷婷久久综合| 久久国产劲爆∧V内射| 老熟妇毛茸茸BBW视频| 少妇愉情理仑片高潮| 伊人精品无码一区二区三区电影 | 国产下药迷倒白嫩美女网站| 精品人妻少妇一区二区三区在线| 人妻精品久久久久中文字幕69 | 精品一区二区三人妻视频 | 99精品久久久久久久另类| 成人免费无码大片A毛片抽搐| 久久精品国产2020观看福利| 人妻精品丝袜一区二区无码AV| 亚洲国产AV无码一区二区三区| ZOOM与牛性胶ZOOM| 久久综合亚洲鲁鲁九月天| 无码国产精品一区二区VR老人| 亚洲永久精品wW4791一区| 82岁老人找20多岁小伙子| 国产粉嫩嫩00在线正在播放| 久久久国产99久久国产久| 午夜亚洲国产理论片2020| 专干熟肥老妇人视频在线看| 精品无码国模私拍视频| 人妻系列无码专区久久五月天 | 国精一二二产品无人区免费应用| 久久久久亚洲AV无码尤物| 日韩精品无码AV成人观看| 无码国产精品一区二区高潮| 亚洲国产精品久久久就秋霞| 国产YW855.CCM免费观看| 欧美性爱XXXX黑人| 野花社区高清在线观看视频| 国产一二三四区乱码免费| 欧美搡BBBBB搡BBBBB| 中文字幕无线码免费人妻| 精品无码人妻一区二区三区18| 吸头AXYGEN日本| XXXXHDTEEN欧美内射| 欧美XXXX做受欧美88| 亚洲一线产区和二线产区的区别| 韩国羞耻漫画免费 | 国产CHINESE男男GAY片| 日日摸夜夜摸狠狠摸婷婷| 18禁黄网站禁片免费观看女女| 久久亚洲欧美国产精品| 亚洲日韩中文字幕一区| 久久精品国产自清天天线| 午夜无码一区二区三区在线观看 | 少妇高潮喷水惨叫久久久久电影| 播放男人添女人下边视频 | 丰满岳乱妇在线观看中字无码| 女人被狂C到高潮视频网站| 98精产国品一二三产区区| 麻豆精品传媒一二三区艾秋| 2021国产手机在线精品| 欧美激情000ⅩXX同性| 按摩师用嘴亲我下面过程| 色欲AV蜜桃一区二区三| 高清国产天干天干天干| 西西午夜无码大胆啪啪国模 | 亚洲爆乳精品无码一区二区| 国产精品亚洲片夜色在线| 视频视频APP在线看| 贵阳40多岁熟女高潮呻吟| 亚洲AV永久无码精品桃花岛| 两个病娇男友轮流爱我资源| 9人妻人人澡人人爽人人精品| 欧美成人高清WW| А√天堂中文官网在线BT| 国产成人精品午夜福利在线播放| 性饥渴少妇做私密SPA| 果冻国产精品麻豆成人AV电影| 亚洲AV无码一区二区在线蜜桃 | 日本成熟…@视频| 国产农村乱人伦精品视频| 亚洲精品无码AⅤ中文字幕蜜桃| 久久精品国产清高在天天线| T66Y地址一地址二满18周岁| 日韩人妻无码精品久久| 好紧我太爽了视频免费| 99久9在线 | 免费| 亚洲AV成人无码久久精品老人| 男人激烈吮乳吃奶动态图 | 熟妇人妻VA精品中文字幕| 国产无遮挡又黄又爽高潮| 67194熟妇在线观看线路| 午夜精品四季AV日日骚| 欧美亚洲精品SUV| 精产国品一二三产品在哪 | 少妇极品熟妇人妻| 国产亚洲精品无码专区| WWW免费视频在线观看播放| 天国少女免费观看| 久久国产AVJUST麻豆| 国产成人a在线看片色欲AV| 97国产精华最好的产品在线 | 国产免费久久久久久无码| 中文人妻无码一区二区三区在线| 无遮挡边摸边吃奶边做视频免费| 久久久久久精品成人网站蜜臀| 国产成人一区二区青青草原| 夜夜嗨AV一区二区三区| 日韩GAY小鲜肉啪啪18禁| 精品国产精品国产偷麻豆| 国产爆乳无码福利电影| JAPANESE熟女熟妇多毛毛| 亚洲AV成人片在线观看18| 日本熟妇色丰满少妇wwwww色| 免费看黄A级毛片| 久久久精品人妻一区亚美研究所 | 秋霞在线看片无码免费| 麻豆国产AV丝袜白领传媒| 久久精品国产精油按摩| 黑人异族XXXⅩ吊大| 国内精品视频在线观看九九| 国产精品久久久久精品综合紧|