位置: 编程技术 - 正文

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

  • 核定征收企业所得税率是多少
  • 流转税率是什么意思
  • 什么是价外税价外税有哪些
  • 定期定额的个税起征点
  • 土地增值税预缴最新税法规定
  • 漏提折旧可以所得税扣除吗
  • 增值税的附加
  • 二手房房产税如何征收
  • 营业收入在财务报表上跟实际多出来怎么解释
  • 售后回租产生的利息怎么做账
  • 对公账户短信服务费怎么取消
  • 如何查看windows密钥时间
  • 在win7系统中如何让电脑恢复出厂设置方法
  • 收到现金支票如何进账
  • 企业办税人员是干嘛的
  • 已抵扣的固定资产进项税转出如何处理
  • 普通发票用记账吗
  • 酒店没有营业执照开业犯法吗
  • php连接sqlserver2008
  • .linux文件
  • 专用发票增量申请流程
  • php中strstr
  • 福利费发票已认证怎么查
  • mt-mon.exe
  • 研发费用的支出类型有哪些
  • 企业预付工程款的会计分录怎么做
  • 保险多扣一个月
  • 前端uniapp写表格
  • 知识产权专利费包括哪些费用
  • hadoop java
  • php 数学函数
  • 制造费用主要核算项目
  • 实际缴纳的增值税是什么意思
  • 公账转给员工工资
  • 认缴倒闭无力实缴强制执行
  • 通用定额发票能当餐饮发票报销吗
  • 公司盖厂房没有票要交税吗?
  • 小规模纳税人免增值税的账务处理
  • 为什么我们要用英语交流翻译
  • 费用结转的方法有哪些
  • 招聘招一个人爱我图片
  • 上月暂估的成本这月收到票怎么做
  • 印花税每月未计提怎么办
  • 其他应付现金流量表
  • 制造费用转入生产成本摘要怎么写
  • 职工福利费无发放原因
  • 法人投资属于什么会计科目
  • 税金及附加是什么账户
  • 企业利润率如何计算公式
  • 简易征收租赁税率3还是5
  • 如何进行企业建账
  • MYSQL updatexml()函数报错注入解析
  • mysql数据库简单介绍
  • windowsxp关机没反应
  • windows10访问xp
  • 如何解决孩子多动
  • Win7任务栏时间显示秒
  • linux oracle 01034
  • 常用的linux操作
  • win10网卡驱动不正常连不上网怎么办
  • windows免费升级win10
  • cocos2dx屏幕适配解决方案
  • 编写一个简单的shell
  • bootstrap tooltip
  • js实现二维码生成与解析
  • [置顶]游戏名 TentacleLocker
  • css颜色值正确的表达形式
  • 修改文件名ren
  • u3d transform
  • 老司机指的是
  • python convexhull
  • 未缴税税务说明书
  • 注册资金实缴证明怎么出
  • 补充协议需要双方签字盖章吗
  • 应税和非应税是什么意思
  • 个人转让限售股原值无法确定
  • 个人年收入超过多少不能退税
  • 苏宁易购股份转增股本
  • 预先支付货款
  • 个人所得税的通知
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设