位置: 编程技术 - 正文

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实现图片上传的示例代码

  • 小规模缴纳增值税
  • 一般纳税人开具的普票可以抵扣吗
  • 消费税的账务处理流程
  • 借贷利息怎么算
  • 预收账款哪一方是增加
  • 表外负债和表内负债对比
  • 养老险的基数
  • 土地出让金计算方法
  • 外币账户怎么操作
  • 短期借款在房地产怎么算
  • 房地产公司扣减土地出让金怎么入账?
  • 年终奖社保怎么算
  • 公司和别人合伙违法吗
  • 签订设备维修合同会计分录
  • 不交增值税就不交企业所得税吗
  • 非独立核算分公司怎么报税
  • 关于金三地税打印控件
  • 电商刷单手续费做什么费用?
  • 公司账户收到车险怎么做账
  • 文化事业税收优惠政策
  • 进项票认证超了怎么处理
  • 增资印花税税目
  • 安置残疾人员加计扣除
  • 零售价法会计分录
  • 建筑施工企业跨区域如何缴税
  • 债券的到期收益率取决于
  • 实收资本属于会计准则吗
  • 电脑开机无法启动怎么解决
  • 融资租赁货车
  • 商品房缴纳维修基金的规定
  • 营改增后房地产会计账务处理
  • 帝国cms标签调用大全
  • php将数字转为字符串
  • 免抵退税额好难懂
  • 借款合同印花税怎么做账
  • 尚融宝盈(宁波)投资中心(有限合伙)
  • vue中的provide/inject
  • php上传图片并显示
  • 使用小程序实现im
  • 人工智能大模型上市公司
  • 基于chatGPT设计卷积神经网络
  • 计算md5值命令
  • 公允价值计量转权益法例题
  • 其他发票包括哪些
  • 淘宝企业店必须绑定对公账户吗
  • 购买的无形资产交印花税吗?
  • 净资产是资产负债表中的什么
  • 生产企业出口退税全部流程
  • 教育培训行业成功案例
  • 企业所得税入账凭证
  • 以前年度的银行流水可以补进来做账嘛
  • 慰问金计入什么部门经济分类
  • 进项大于销项的原因
  • 工资条上为什么不显示生育险
  • sql2000语句
  • windows延缓写入失败怎么修复
  • Win10 Mobile 10549预览版怎么升级?
  • windows server 2008下一些设置技巧及优化经验总结
  • xp系统ie浏览器怎么升级
  • openssh centos
  • linux安装flash插件
  • windows推送
  • 怎么打开xp
  • win7集成补丁教程
  • win8整理磁盘碎片的步骤
  • red hat linux安装
  • javascript详解
  • javascript继承原理
  • node.js开发指南
  • android真机调试闪退
  • 基于flask的开源项目
  • Python中模块和包的区别
  • JavaSacript中charCodeAt()方法的使用详解
  • 安卓状态栏宽度
  • 不用javascript可以吗
  • 简述python语言
  • 产品税务编号查询系统官网
  • 座机怎么查来电显示号码
  • 个体户一直没有年报
  • 江西省企业社会保险费缴费指南
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设