位置: 编程技术 - 正文

node中koa中间件机制详解(node作为中间件做接口转发)

编辑:rootadmin

推荐整理分享node中koa中间件机制详解(node作为中间件做接口转发),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node中间层案例,node作为中间件做接口转发,node中间件是什么意思,nodejs 中间件,node什么是中间件,常用的第三方,node什么是中间件,常用的第三方,node 中间件,nodejs 中间件,内容如对您有帮助,希望把文章链接给更多的朋友!

koa

koa是由express原班人马打造的一个更小、更富有表现力、更健壮的web框架。

在我眼中,koa的确是比express轻量的多,koa给我的感觉更像是一个中间件框架,koa只是一个基础的架子,需要用到的相应的功能时,用相应的中间件来实现就好,诸如路由系统等。一个更好的点在于,express是基于回调来处理,至于回调到底有多么的不好,大家可以自行搜索来看。koa1基于的co库,所以koa1利用Generator来代替回调,而koa2由于node对async/await的支持,所以koa2利用的是async/await。关于async以及co库等,大家可以参考我之前写过的一篇文章(理解async)。koa可以说是一个各种中间件的架子,下面就来看一下koa对于中间件部分的实现:

koa1的中间件

koa1主要利用的是Generator来实现,一般来说,koa1的一个中间件大概是长这个样子的:

这样的输出会是1, 2, 3, 4, 5,koa的中间件的实现主要依靠的是koa-compose:

node中koa中间件机制详解(node作为中间件做接口转发)

源码非常的简单,实现的功能就是将所有的中间件串联起来,首先给倒数第一个中间件传入一个noop作为其next,再将这个整理后的倒数第一个中间作为next传入倒数第二个中间件,最终得到的next就是整理后的第一个中间件。说起来比较复杂,画图来看:

实现的效果如同上图,与redux需要实现的目标类似,只要遇到了yield next就去执行下一个中间件,利用co库很容易将这个流程串联起来,下面来简单模拟下,中间件完整的实现:

koa2的中间件

随着node对于async/await的支持,貌似不需要再借助于co这种工具库了,直接利用原生的就好,于是koa也做出了改变,来看目前的koa-compose:

koa-compose利用了Promise,koa2的中间件的参数也有一个变为了两个,而且执行下一个的中间件利用的是await next(),要达到与上面的示例代码的相同效果,需要更改中间件的写法:

如何做到兼容

可以看到的是,koa1与koa2对于中间件的实现还是有着很多的不同的,将koa1的中间件直接拿到koa2下面来使用肯定是会出现错误的,如何兼容这两个版本也成了一个问题,koa团队写了一个包来是koa1的中间件可以用于koa2中,叫做koa-convert,先来看看这个包怎么使用:

来看下这个包实现的思路:

个人感觉koa-convert的思路就是对Generator封装一层Promise,使上一个中间件可以利用await next()的方式调用,对于Generator的执行,利用co库,从而达到了兼容的目的。

标签: node作为中间件做接口转发

本文链接地址:https://www.jiuchutong.com/biancheng/380940.html 转载请保留说明!

上一篇:基于node.js之调试器详解(node.js gui)

下一篇:React+react-dropzone+node.js实现图片上传的示例代码

  • 购买土地的契税怎么计算
  • 个体工商户单位性质怎么填
  • 给对方汇钱
  • 差额冲销
  • 投资款转账没备案怎么办
  • 无形资产可以一次性摊销吗?
  • 高新技术企业费用认定
  • 房地产企业广告费扣除基数
  • 个人独资企业个人所得税税率
  • 建筑公司对外如何开票
  • 已抵扣发票红冲后发票还给对方公司
  • 小规模企业差额征收税率
  • 公司筹建期产生的费用如何开票?
  • 个人能去税务局开普票吗
  • 金税四期具体内容
  • 球场水面办鱼业养殖的税收筹划分析
  • 1697508991
  • 教育费附加免征还计提吗
  • 在win7系统中文件属性有哪些
  • 交易性金融资产是什么意思
  • rtmservice.exe - rtmservice是什么进程 有什么用
  • 年度企业所得税计算方法
  • php字符转换成数字
  • php __destruct
  • 公益性捐赠申报填列
  • vue ng
  • h5调用海康摄像头
  • 塔河流域
  • php504错误
  • lxml&xpath一站式教学
  • linux调试工具有哪些
  • Python运算符的优先级别
  • 支付国外佣金税怎么算
  • 错误凭证如何修改?所有的错误的凭证都能修改吗?
  • 织梦采集器图片本地化
  • 销售费用和管理费用占比多少合理
  • 自来水公司水表安装标准
  • mysql存long
  • 销售送客户礼物
  • 小微企业全年营业额不能超过多少
  • 其他应收款账户管理应遵循
  • 生育津贴是怎么申请
  • 海关进口增值税专用缴款书
  • 交付使用资产是固定资产吗
  • 报销电话费计入什么科目
  • 外购的商品赠送客人是否销售吗
  • 建筑企业预缴税款怎么算
  • 固定资产改造更新后年限怎么算
  • 应交税费附加税明细科目
  • 购买无形资产的手续费计入
  • 工程挂靠取得的收入怎么做账?
  • 一般纳税人销售旧货可以开专票吗
  • 固定资产折旧账务处理例题
  • 增值税留抵怎么做凭证
  • 酒店营业成本率怎么算
  • 律师事务所如何成立
  • 存货售出时可以冲减资产减值损失吗
  • 收到福利费的专用发票
  • win7登录设置
  • 高效管理者的三大技能 罗伯特卡茨
  • page文档的排版技巧
  • u盘装系统步骤delt进入界面怎么选择
  • linux中的ssh命令
  • winxp win10哪个快
  • centos 开机启动
  • centos7添加ip地址
  • ttf字体怎么转itz
  • win7 host文件路径
  • linux如何查看用户的信息
  • Win10 Mobile RedStone预览版14267已知问题与修复内容汇总
  • jquery 动态加载js
  • 合并一个文件夹下多个工作簿
  • unity手柄圆盘
  • linux的cp和mv
  • expect实现单台、多台服务器批量scp传输文件
  • js html css
  • jquery使用教程
  • 金税盘显示证书口令错误
  • 重庆税务信息采集如何操作
  • 劳务报酬所得个人所得税计算方法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设