位置: 编程技术 - 正文

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

  • 增值税进项税抵扣时间
  • 海外工作薪资比国内高多少
  • 个人生产经营所得税
  • 向投资者支付的股息红利等权益性投资收益款项
  • 一次性奖金收入如何交个税
  • 公司办理个人所得税退税
  • 企业清算未分配利润不分配要交个税吗
  • 收到抵物广告费的会计处理怎么做?
  • 全额抵减税控盘分录
  • 用盈余公积弥补亏损会影响所有者权益吗
  • 旧设备进口关税
  • 研究费加计扣除多少
  • 企业年金的税收政策
  • 查税是按基本账户吗
  • 固定资产增值税怎么抵扣
  • 建筑业开票内容
  • 微众银行账户验证账户0019向您尾号677账户
  • 走物流的货物如何收费
  • 决算帐表不相符怎么处理
  • 金蝶迷你版不能期末结账怎么办
  • mac系统的桌面
  • 主办会计工作注意什么
  • “linux系统”
  • 税务实名认证是不是就是税务登记
  • 隐藏登录界面的软件
  • mid文件和midi文件
  • launcheflc.exe什么意思
  • PHP:curl_close()的用法_cURL函数
  • 山茶花的养殖方法盆栽
  • 企业会计的日常行为准则
  • PHP:imagecopymerge()的用法_GD库图像处理函数
  • 前端常见错误
  • 城建税教育费附加会计分录
  • 企业利润总额为负
  • 前端经典面试题及答案
  • es6 promise finally
  • 工会经费月月都缴纳吗?
  • 应发工资与应税的区别
  • 公司借调员工
  • 公司多余的钱叫什么
  • 企业所得税季末资产总额
  • 发票税率怎么改成3%
  • 应交增值税明细账怎么填写样本
  • 商业承兑汇票风险高吗
  • 总公司给分公司拨款属于什么
  • 企业刚注册成功又要注销要什么手续
  • 汽车加油费属于交通费用吗
  • 预收账款最后怎么处理
  • 发票验旧就是作废么?
  • 误餐补助标准国家规定
  • 消耗性生物资产属于非流动资产吗
  • 车船税没发票只交可以吗
  • mysql正则表达式匹配数字
  • window如何还原系统
  • solaris 磁盘管理
  • 注册表c盘桌面路径改为d盘
  • windows7个性化菜单
  • 如何关闭windows8的密码
  • ubuntu邮箱客户端
  • linux常用命令行
  • linux系统中怎么输入中文
  • openoffice使用
  • win7系统如何设置
  • 如何下载安装windows10
  • win7系统怎么调整字体大小
  • win7系统和win8系统哪个好用
  • cocoscreator动画
  • g8a1
  • nodejs 异步io底层原理
  • 炉石传说用什么语言开发的
  • 安卓解析工具
  • python模板引擎开发
  • unity异步加载场景
  • python内置函数format
  • unity相关问题
  • js创建对象的方法有哪些
  • 物业公司收取物业费要交税吗
  • 浅谈新时代劳动教育答案
  • 什么是个税扣缴期限
  • 药品定价的三种形式
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设