位置: 编程技术 - 正文

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

  • 农产品加工企业怎样申请营业执照?
  • 应税所得率表
  • 出租划拨土地收费合法吗
  • 预付账款和应付账款的区别
  • 不动产用于集体福利能否抵扣
  • 存续分立的账务处理
  • 水利基金应税项和减除项
  • 企业所得税抵扣项
  • 做实验用的东西哪里可以买到
  • 房屋租赁合同印花税的税率
  • 开立个人银行账户的条件
  • 预付货款核销如何做会计摘要呢?
  • 本期增加发生额是指
  • 公司员工出差补贴与差旅费报销制度
  • 股东个人借款用于公司怎么处理
  • 企业的无形资产包括哪些内容
  • 购买东西押金不退要怎么处理
  • 小规模纳税人增值税免征额
  • windows10如何关闭左下角的搜索
  • 财产转让所得怎么申报个税
  • 没有车船税可以检车吗
  • win7如何打开管理员权限
  • 服务器centos6.9安装教程
  • 如何修改自己电脑物理地址
  • linux系统怎么访问共享文件夹
  • 母公司给全资子公司担保需要决议吗
  • redis使用php
  • php初学
  • 一般纳税人购进农产品如何抵扣进项税额
  • 未取得专用发票是否计算增值税
  • 改制后企业
  • 福利包括什么
  • 前端数据加密的三种方式
  • 增值税纳税人如何界定
  • 应交城建税怎么算
  • 工具tj
  • 补收入账是什么意思
  • 无法支付其他应用怎么办
  • 营改增后残保金计入什么科目
  • 教育费附加减免政策
  • 用简易计税办法开发票
  • 销售包装什么意思
  • 企业没有ca怎么登陆公积金账户
  • js函数声明的提出者
  • 发票丢失了怎么报销
  • 一般计税预缴增值税2%怎么算
  • 预缴了增值税在申报增值税时申报
  • 2020新个税申报流程
  • 企业当期营业收入的计算
  • 简易计税指的是增值税吗
  • 计入税金及附加的税种顺口溜
  • 撤回或减少投资所得税处理
  • 初级会计实务中第二章第四节存货(5)费琪
  • 施工企业暂估成本
  • 应付职工薪酬的核算内容
  • 契税是房价乘以1.5吗
  • 专利年费 缴纳
  • 分期收款发出商品一批,售价50000
  • 营改增后,建筑行业与供应商签合同才怎样签没风险?
  • 加盟费开发票
  • 汽车属于固定资产类吗
  • 支付保证金如何做账务处理
  • 什么是成本费用,什么是经营成本
  • 营业税金及附加和税金及附加有什么区别
  • 杭州租房补贴社保断缴影响
  • 无线网络找不到证书
  • 鼠标右键一直锁定一个应用
  • win8电脑背景变成黑色的了是为什么
  • 磁贴for kwgt
  • windows更新后桌面没反应
  • linux系统怎么弄
  • linux小技巧
  • opengl画点
  • unity用鼠标控制物体移动
  • unity操作教程
  • 清除安卓系统垃圾
  • 浅谈python 四种数值类型(int,long,float,complex)
  • 车位过户需要契税发票吗
  • 进口天然气定价机制
  • 办理养殖照税务登记证
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设