一、前言
之前做毕业设计的时候用过express.js作为后端服务器,如今express的原班人马又重新打造了一个新的基于Promise、async以及await的nodeJS的web框架。其框架最大的特点是精简,开发者可以自行定制开发多个koa中间件或者第三方中间件来使用koa框架。因为koa基于javascript语言,所以作为后端框架相对于其他语言,优势在于性能更强,即访问快。
二、特点
学习的时候有许多没有听过的名词如:中间件,洋葱模型。
- 中间件。koa既然需要作为处理前端发来的请求,那么数据获取、处理代码的逻辑总不能都写在一起吧?因此需要把代码拆开分开多个中间件(也可以理解为一个个函数)根据功能、业务等。多个中间件方便进行阅读维护,而且不同中间件之间需要用async以及await进行编写,好处在于实现异步编程,举个例子:A中间件工作是将一幅画上色,而B中间件则是负责将这幅画用画框裱起来,这时候B中间件怎么知道A中间件完成了上色工作呢?总不能A中间件还没完成,B中间件就把画给裱起来了吧?async以及await用阻塞的方式帮助我们实现B等待A完成工作之后再执行自己的工作。
- 洋葱模型。工作正如洋葱的结构一样一层一层的进行。如图所示:中间件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)