位置: 编程技术 - 正文

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

  • 应交税费借方余额0.01怎么调整
  • 小微企业年度所得税优惠政策
  • 以公司名义买50万的车可以省多少钱
  • 收入 合同
  • 结转本年度收入
  • 公司账户资金
  • 原材料计划价实际价区别
  • 支付跨年租金如何处理
  • 计提固定资产减值准备属于什么支出
  • 上海市购销合同印花税计税金额怎么算?
  • 发票丢失能直接作废吗
  • 印花税已经缴纳了还需要申报
  • 报税需要带营业执照吗
  • 资本公积转增资本的条件
  • 哪些人可以享受4050社保补贴
  • 不含税单价怎么换成含税单价
  • 开票金额是纳税金额吗
  • 建筑 分包
  • 普通股资本成本的计算
  • 小企业会计准则成本核算方法选什么
  • 增值税进项税怎么算
  • 资产总额和净资本的关系
  • 职工教育经费的扣除限额
  • Win10 LTSC 2021(长期服务频道)正式版发布: 附MSDN官方ISO纯净镜像下载
  • 财务费用增加记借方还是贷方
  • 公司车过户给个人流程
  • Otter Cliffs, Acadia National Park, Maine (© dbimages/Alamy)
  • 栅格布局实现
  • vue中el-dialog
  • 实物资产的管理
  • nerf 怎么瞄准
  • 技术服务费可以计入成本吗
  • 圣诞精灵什么意思
  • php解析配置文件
  • php模板引擎语法
  • vue路由使用方法
  • php扩展安装方法
  • 应付国库集中支付结余在什么时候确认
  • bootstrap-
  • 房地产企业出售房产增值税
  • 认缴制和实缴制的区别
  • 工会经费的使用范围有哪些
  • python 平均函数
  • 应纳税所得额调整金额怎么算
  • 三类职业指的是什么
  • 公司购买led屏幕做到什么费用
  • 企业固定资产报废账务处理
  • 企业购买商铺会查征信吗
  • 企业账户在银行买黄金可以开发票吗
  • 个体工商户季度超过9万怎么交税
  • 故障的机器修好多少钱
  • 企业接管的方式有
  • 销售返利及发票开具如何进行会计处理?
  • 速动比率和流动比率怎么分析
  • 收不回来的问题
  • 公司名义送花篮属于什么费用
  • 个体工商户注销代办
  • 小企业成本核算方法怎么填
  • 内账价税分离如何做账
  • 收付实现制下收入包括增值税吗
  • 忘记MySQL的root密码该怎么办
  • 亲测可用抖音低价单赚派费项目
  • win10装老版本
  • win8开机进入开始界面
  • win7如何打开命令窗口
  • ghost10008解决办法
  • angularjs定义全局变量
  • url跟uri
  • js图形界面
  • javascript定律
  • js跨域请求有哪些方式
  • android清理软件评测
  • 两种方法解决问题三年级下册
  • javascript每隔一秒调用函数
  • 河南居民医保网上缴费查询
  • 怎么打印纳税申报单
  • 重庆市国税电子税务局
  • 深圳12366接听客服工作怎么样
  • 新郑市税务局
  • 如何进行税务筹划工作
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设