位置: 编程技术 - 正文

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

  • 关于办理退税手续的通知
  • 公司更换营业执照需要多久
  • 个人独资企业生活费用和经营费用混在一起的
  • 子公司自购买日开始持续计算的净资产包括商誉吗
  • 税盘没有及时清卡
  • 无销项税额
  • 成品油跨月发票红字冲销步骤
  • 捐赠支出税前扣除
  • 罚款从工资扣除的说明
  • 无形资产减值准备
  • 企业购入物资合同模板
  • 债券利息收入的增值税
  • 营改增之后账务怎么处理
  • 未分配利润转增股本 个人所得税
  • 工会开票是否需要开户银行
  • 半成品牛排有营养吗
  • 个体工商户2020
  • 有限公司资本公积转增股本要交税吗
  • 外商投资的企业是外资企业吗
  • 现金折扣发票如何开具
  • 往年个税申报数据查询
  • 固定资产投资增值税进项税额抵扣规定
  • 应收账款坏账有什么措施改善
  • 合同终止后发生的效果包括
  • 期末余额和期初余额
  • 固定资产入账价值计算公式
  • qbupdate.exe - qbupdate是什么进程 有什么作用
  • 联想笔记本在bios中怎么把图标和字变大
  • php中的变量都以什么开头
  • postgres.exe是什么进程 postgres进程查询
  • php中的require
  • 金融资产终止确认是什么意思
  • au_.exe是什么进程
  • iconfonf
  • php获取访问用户的ip
  • 阿普拉萨
  • 拥有自我意识的动物有哪些
  • 进项税额转出和不抵扣的区别
  • GANs系列:CGAN(条件GAN)原理简介以及项目代码实现
  • move命令移动文件夹下所有文件
  • 出纳各种费用如何归类
  • 长期股权投资入账价值
  • 接待客人的场合
  • 国内源码平台
  • mongodb数据查询
  • 中标的费用怎么算
  • 一般纳税人可以转小规模纳税人吗
  • 年终奖的个税税率表
  • access参数查询怎么弄
  • 固定资产折旧和无形资产摊销
  • 月末一般无余额的账户是( )
  • 月末进项税大于销项税额怎么结转
  • sql server数据库恢复
  • 其他应收款科目核算哪些业务
  • 建筑施工企业适用什么会计制度
  • 汇算清缴退税怎么回事
  • 销售货款是什么
  • 社保补贴生育津贴
  • 进项税销项税增值税的区别
  • 应付账款增值税如何挂账
  • 哪些工资属于社会福利
  • windows禁止安装
  • 清理c盘清理
  • win9有吗
  • 在基于Xen的CentOS系统VPS上配置PPTP VPN的教程
  • win7小键盘数字键不能用怎么办
  • ie8怎么设置默认ie7模式
  • win7怎么修改开始菜单样式
  • win10系统office2007每次打开都要配置
  • win10如何设置默认应用语言
  • win10 升级系统
  • ercp后淀粉酶为什么升高
  • unity一运行就停止工作
  • js验证身份证合法性
  • python常用操作运算符
  • javascript数据类型有哪些
  • 南京电子税务局咨询电话
  • 武汉税务局官网查询系统
  • 个人的社会信用代码怎么查
  • 企业所得税年报职工薪酬纳税调整明细表
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设