位置: 编程技术 - 正文

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

  • 报个税时显示扣缴单位无有效的税费种认定信息
  • 应交税费是什么类
  • 租的房子装修费如何入账
  • 公司注销公户没注销会如何
  • 企业会计制度固定资产保险费
  • 文化传媒公司开票税点
  • 运输企业车辆折旧一次性折旧
  • 广告服务商是什么意思
  • 小规模能开劳务费吗
  • 住房公积金部分业务暂停办理
  • 当月发票未收到怎么办
  • 管理费抵扣如何计算
  • 实收资本印花税税率多少
  • 客户为了凑整多打的款计入什么科目?
  • 分配结转制造费用会计分录怎么写?
  • 银行已扣社保会计分录怎么做
  • 现金出资可以吗
  • 福利费可以用什么科目
  • 已抵扣的发票怎么开红字发票申请单
  • 待转销项税额会计分录
  • 小规模纳税人开专票需要交税吗
  • 增值税发票当期能抵扣吗
  • 工会筹备金需要在年终汇算调增吗
  • 生产企业出口退税操作流程视频
  • 跨区域预缴企业所得税
  • 跨年度的费用发票做错了怎么办
  • 取得的国债利息收入可以抵扣吗
  • 发票销货清单需要到税务局吗
  • 留用员工培训费怎么入账
  • 所得税a类申报表
  • 高新技术企业的研发费用比例
  • 出口退税限额如何理解
  • 企业所得税汇算清缴扣除比例
  • 结转本年利润之后还要干啥
  • 承兑交单是什么的一种
  • stk al00华为
  • 怎么提升电脑速度
  • PHP:session_decode()的用法_Session函数
  • php的数组函数
  • RunClubSanDisk.exe是什么程序? 闪迪U盘广告推介程序
  • 广告宣传费的税收筹划
  • php并发编程
  • 个体工商户使用个人二维码收款违法吗
  • 大前端技术
  • xa 事务
  • Yii2针对游客、用户防范规则和限制的解决方法分析
  • 租金收入的所得税率
  • 资金账簿印花税怎么算
  • 银行汇票和银行承兑汇票的区别
  • 轿车折旧年限为几年
  • 长期待摊费用如何记账
  • 公司注销后应收账款转给个人
  • 建安企业增值税预缴
  • 房地产预交税金怎么算
  • 工程项目预缴税率
  • 坏账确认方法有哪些?
  • 民间非营利组织会计制度及操作实务
  • 错误原始凭证怎么写
  • 怎么从会计小白做到总账会计
  • 存货与总账对账
  • mysql8.0优化
  • windowsserver2008密码规则
  • win7旗舰版激活期限已过
  • dropbox app
  • 彻底删除ubuntu系统
  • mac硬盘的常见问题及解决
  • win8账户锁定无法登录
  • 创建一个css文件
  • unity基础包
  • 安卓手机root后更流畅吗
  • android仿qq聊天
  • python微信公众号开发教程
  • 使用jQuery加载html页面到指定的div实现方法
  • jquery写网页
  • 四川国税发票真伪查询
  • 矿山占用荒山是什么意思
  • 下载广东省电子税务局appp
  • 税务检查的程序
  • 银行服务创新金点子
  • 辽宁省医保明细查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设