位置: 编程技术 - 正文

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

  • 工资储备金制度
  • 个体工商户营业执照需要什么材料
  • 什么情况下一般纳税人可以简易征收
  • 超过两年记入错误的主营业务成本怎么调账
  • 新办企业发票核定及申领,选否行吗
  • 已经作废的发票还需要申报吗
  • 旅游公司如何缴费
  • 个人劳务费 税
  • 进项税加计扣除账务处理
  • 增值税发票红字发票怎么做凭证
  • 个人所得税减半征收
  • 印花税销售分录
  • 7月1日发票新规定
  • 固定资产一次性计入费用的账务处理
  • 资产负债率怎么计算
  • 企业更换银行卡意味着什么
  • 公司向外单位借款摘要怎么写
  • 记账凭证填制的内容
  • 个人开发票给公司需要提交哪些资料
  • 增值税减免税明细表
  • 筹建期间发生的费用计入哪里
  • 神州战神笔记本怎么进入不了bios
  • 兼营行为的含义
  • 只交社保不发工资可以吗
  • 抵扣后增值税税率
  • php面向对象优点,缺点
  • sistray.exe - sistray是什么进程 有什么用
  • 其他业务成本主要有哪些
  • 股东未实缴资本,因为经营困难借给公司钱,可以要求返还
  • 购买车辆的会计分录该怎样做
  • 高通 adc
  • 退税发票在总局怎么开
  • h5项目怎么打包成app
  • html怎么用java
  • 微信实现刮刮卡抽奖效果
  • 残保金是应交税金吗
  • 通行费电子发票抵扣填写到附表二的第几栏次
  • 增值税申报表中销售额
  • 价税合计公式分配
  • 材料采购会计科目怎么使用
  • vue使用百度地图md5报错
  • 织梦标签理解
  • 两个城市的社保可以累计吗
  • 没有数字的公章有效吗
  • mysql监控sql性能
  • sql 语句插入结果为select和值混合示例
  • 等线支付给劳务派遣单位的工资怎么做账?
  • 印花税是必交的吗
  • 小规模纳税人出租不动产优惠政策
  • 工程维修款是从工程款中扣除吗
  • 已抵扣的进项税额转出怎么做会计分录
  • 发票金额太大怎么办
  • 财务报表的一般构成要素
  • 法人能去税务局开个人发票吗
  • 购买原材料材料尚未验收入库,款项尚未支付
  • 费用报销单如何审核
  • 电子发票服务平台怎么下载发票
  • 汽车折旧计算方法2023折旧率
  • 期间费用包括哪些费用
  • sql server日期相减
  • windows任务管理
  • win8无法关机一直转圈
  • 如何检测电脑能否上网
  • Win10打开淘宝https被划上红色斜杠的快速解决办法
  • 极限竞速中心应用程序
  • win7系统怎么设置开机启动项
  • c#在unity的作用
  • unity分发平台
  • 微信小程序实现烟花
  • jquery常用
  • 命令适用于
  • python简单gui
  • jquery新增属性
  • 国家税务发票查验平台手机怎么查
  • 大数据在税务稽查的应用
  • 上海税务网厅
  • 乡镇调研报告最佳范文
  • 小规模纳税人税费怎么算
  • 重庆地方税务局2016年2号
  • 国家体育总局发布的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设