首页 > 技术文章 > 【koa】koa.js框架原理及特点-学习笔记-1

xwh7 2020-01-12 17:33 原文

一、前言

  之前做毕业设计的时候用过express.js作为后端服务器,如今express的原班人马又重新打造了一个新的基于Promise、async以及await的nodeJS的web框架。其框架最大的特点是精简,开发者可以自行定制开发多个koa中间件或者第三方中间件来使用koa框架。因为koa基于javascript语言,所以作为后端框架相对于其他语言,优势在于性能更强,即访问快。

二、特点

  学习的时候有许多没有听过的名词如:中间件,洋葱模型。

  1.   中间件。koa既然需要作为处理前端发来的请求,那么数据获取、处理代码的逻辑总不能都写在一起吧?因此需要把代码拆开分开多个中间件(也可以理解为一个个函数)根据功能、业务等。多个中间件方便进行阅读维护,而且不同中间件之间需要用async以及await进行编写,好处在于实现异步编程,举个例子:A中间件工作是将一幅画上色,而B中间件则是负责将这幅画用画框裱起来,这时候B中间件怎么知道A中间件完成了上色工作呢?总不能A中间件还没完成,B中间件就把画给裱起来了吧?async以及await用阻塞的方式帮助我们实现B等待A完成工作之后再执行自己的工作。
  2.   洋葱模型。工作正如洋葱的结构一样一层一层的进行。如图所示:中间件A得知自己要处理的画的名字之后,中间件B也得知画的名字,此时中间件A还不能表上画框因为画还没上色,要等待中间件B上完色才能进行自己的工作。而洋葱模型正好呈现了这个工作流程关系。

2.1 洋葱模型示意图 

 1 const Koa = require('koa');
 2 const app = new Koa();
 3 
 4 // 中间件A
 5 app.use(async (ctx, next) => {
 6   console.log('A获取画名字')
 7   await next()
 8   console.log('A给画表上画框')
 9 })
10 
11 // 中间件B
12 app.use(async ctx => {
13   console.log('B获取画名字')
14   console.log('B给画上色')
15 })
16 
17 app.listen(3000)

推荐阅读