久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久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號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
欧美精选一区二区三区| 国产欧美高清| 亚洲精品888| 中文视频一区| 久久这里只有精品一区二区| 蜜桃精品在线| 男人的天堂久久精品| 欧美日韩一区二区国产 | 欧美在线91| 日韩高清成人在线| 国产91欧美| 日韩午夜av| 国产精品66| 99国产精品久久久久久久成人热 | 国产一区二区三区四区| 在线一区电影| 国产乱人伦精品一区| 婷婷激情一区| 亚洲欧美久久久| 国产丝袜一区| 黄色av日韩| 国产精品宾馆| 午夜精品婷婷| 九九九精品视频| 日韩视频二区| 国产一区三区在线播放| 香蕉久久夜色精品国产| 精品国产亚洲日本| 丝袜美腿亚洲色图| 首页国产精品| 日韩1区2区3区| 激情婷婷久久| 美日韩一区二区三区| 亚洲作爱视频| 91视频久久| 国产亚洲一区二区三区啪| 99久久激情| 欧美精品第一区| 在线精品视频一区| 亚洲一级少妇| 欧美日韩一区二区高清| 亚洲少妇在线| 日韩大片在线| 欧美激情 亚洲a∨综合| 亚洲欧美日本国产| 精品欧美激情在线观看| 乱一区二区av| 亚洲精品欧美| 亚洲欧洲一区二区天堂久久| 色综合五月天| 国产毛片精品久久| 噜噜噜躁狠狠躁狠狠精品视频| 精品三级在线观看视频| 青青草国产精品亚洲专区无| 国产模特精品视频久久久久| 吉吉日韩欧美| 免费看久久久| 日韩av三区| 在线免费观看亚洲| 激情综合自拍| 日本免费一区二区三区四区| 欧美激情aⅴ一区二区三区 | 色爱av综合网| 国产高清亚洲| 亚洲影视一区二区三区| 2023国产精品久久久精品双| 日本蜜桃在线观看视频| 久久永久免费| 欧美国产日韩电影| 日韩激情综合| 一区二区三区国产盗摄| 伊人久久婷婷| 91精品国产乱码久久久久久久 | 久久久久久久久丰满| 精品午夜视频| 欧美国产三级| 国产精品一区二区精品 | 一区二区精彩视频| 99日韩精品| 亚洲精品一区二区在线看| 久久久久99| 国产 日韩 欧美一区| 深夜福利视频一区二区| 国产+成+人+亚洲欧洲在线| 国产精品99精品一区二区三区∴ | 高清在线一区| 精品精品国产三级a∨在线| 欧美激情91| 里番精品3d一二三区| 欧美国产免费| 精品国产一区二区三区av片| 久久精品国产亚洲一区二区三区| 国产伦精品一区二区三区在线播放| 91成人精品在线| 国产欧美综合一区二区三区| 国产精品亚洲二区| 蜜桃久久久久| 精品国产欧美| 日韩成人免费| 都市激情国产精品| 色天使综合视频| 成人av二区| 中文无码久久精品| 日韩中文字幕一区二区高清99| 视频一区国产视频| 亚洲1区在线观看| 日韩精品成人在线观看| 国产精品成人一区二区网站软件| 欧美精品第一区| av中文资源在线资源免费观看| 日韩在线欧美| 久久精品国产www456c0m| 久久国产精品免费精品3p | 亚洲激情社区| 美国av一区二区| 日韩精品欧美精品| 国产精品三p一区二区| 国产+成+人+亚洲欧洲在线| 精精国产xxxx视频在线野外| 尹人成人综合网| 日韩国产成人精品| 久久中文字幕导航| 欧美日韩中文字幕一区二区三区| 亚洲专区一区| 欧美日韩夜夜| 伊人久久国产| 日韩中文欧美在线| 国产欧美三级| 色乱码一区二区三区网站| 在线日韩欧美| 婷婷五月色综合香五月| 国产精品高清一区二区| 精品日韩视频| 日韩专区在线视频| 欧美国产中文高清| 国产91精品对白在线播放| 免费一区二区视频| 久久精品一区二区三区中文字幕| 美女网站视频一区| 亚洲欧美专区| 国产精品yjizz视频网| 手机精品视频在线观看| 国产精品一区二区美女视频免费看| 福利一区二区免费视频| 国产手机视频一区二区| 国产精品久久久久久久久久妞妞| 亚洲精品.com| 日韩中文字幕一区二区高清99| 狠狠久久伊人| 免费不卡在线观看| 精品中文在线| 免费在线观看成人| 高清久久一区| 亚洲精品综合| 91精品韩国| 69堂免费精品视频在线播放| 不卡福利视频| 婷婷综合国产| 日韩在线欧美| 日韩1区2区日韩1区2区| 久久久久久久久丰满| 91成人精品观看| 亚洲激情中文| 捆绑调教美女网站视频一区 | 狠狠色综合网| 麻豆成人在线观看| 视频在线观看一区二区三区| 精品精品99| 午夜电影一区| 亚洲91视频| 国产欧美日韩精品一区二区免费 | 日韩一区精品视频| 亚洲黄色免费av| 天堂av一区| 激情婷婷综合| 成人亚洲一区二区| 日韩av字幕| 蜜臀久久99精品久久一区二区| 国产剧情在线观看一区| 久久精品国产www456c0m| 国产欧美在线观看免费| 乱人伦精品视频在线观看| 91欧美在线| 欧美一区激情| 石原莉奈一区二区三区在线观看| 欧洲精品一区二区三区| 国产精品777777在线播放| 亚洲色图国产| 性欧美69xoxoxoxo| 中文一区一区三区高中清不卡免费| 欧美一级一区| 中文一区一区三区免费在线观 | 国产精品试看| 蜜桃精品在线| 国产中文欧美日韩在线| 欧美三区不卡| 日本va欧美va瓶| 一区二区三区四区日韩| 99热精品在线| 99成人在线视频|