node

node

node

[TOC]

koa中间件有哪些?

  • koa-static: 静态文件

  • koa-better-body:解析表单

  • mysql/co-mysql:使用co-mysql包装mysql,使它可以配合koa使用

参考资料:

koa基础总结和常用中间件

koa 洋葱模型?

特点 :

  • next函数把中间件分成了两部分,导致中间件执行了两次

  • 打印执行的顺序 a1,b1,b2,a2, 理解成镜向翻转(洋葱进入/出去的对称感)

洋葱模型执行流程:

  • 外层中间件进行前期处理(next前的逻辑)

  • 调用next,将控制流交给下个中间件,并await其完成,直到后面没有中间件或者没有Next函数执行为止

  • 完成后一层层回溯执行各个中间件的后期处理(next后的逻辑)

const Koa=require('koa');

//应用程序
const app=new Koa();

//中间件1
app.use((ctx,next)=>{
    console.log(a1);
    next();
    console.log(a2);
})

//中间件2
app.use((ctx,next)=>{
    console.log(b1);
    next();
    console.log(b2);
})

app.listen(9000,'127.0.0.1',()=>{
 console.log('server is starting');
})

//最后执行结果: a1,b1,b2,a2

参考资料: Koa洋葱模型 从理解到实现

express 、koa的区别?

express就是组合了很多功能的koa; koa唯一多了的一个功能就是中间件可以像洋葱一样嵌套(express完全可以实现这样一个功能);异步处理如:promise,generator,callback, async/await thunk 都是浮云,完全可以用任何一种处理异步的方式写任何框架

一、相同点:

都是web Framework 网站框架

二、不同点:

express

特点:

  • 更贴合web Framework的概念,自带Router、路由规则;

  • 事件处理方式使用的回调函数;

优点:历史更久,文档更完善,资料更多

缺点:不能忍的callback

koa

特点:

  • 更多是一个中间件框架,提供一个架子,几乎所有功能都是需要第三方中间件完成(功能更简单,更轻量)

  • 事件处理方式利用生成器函数(Generator Function)来作为响应器

优点:借助promise和generator的能力,丢掉了callback

(koa2.x和1.x最大的区别就是使用ES7中的Async/Await的特性,代替了co的Generator Function语法)

缺点:Connect/Express中间件基本不能重用,基本要重写

最后更新于