koa2介绍
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
应用程序
Koa 应用程序
是一个包含一组中间件函数
的对象
,它是按照类似堆栈的方式组织和执行的。 Koa 类似于你可能遇到过的许多其他中间件系统,例如 Ruby 的 Rack ,Connect 等,然而,一个关键的设计点是在其低级中间件层中提供高级“语法糖”。 这提高了互操作性,稳健性,并使书写中间件更加愉快。
这包括诸如内容协商,缓存清理,代理支持和重定向等常见任务的方法。 尽管提供了相当多的有用的方法 Koa 仍保持了一个很小的体积,因为没有捆绑中间件。
必修的 hello world 应用:
// app.js
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
级联
Koa 中间件以更传统的方式级联,您可能习惯使用类似的工具 - 之前难以让用户友好地使用 node 的回调。然而,使用 async 功能,我们可以实现 “真实” 的中间件。对比 Connect 的实现,通过一系列功能直接传递控制,直到一个返回,Koa 调用“下游”,然后控制流回“上游”。
下面的图片,将中间件看成一个个圆形,比如从外往里,分别是
m1,m2,m3中间件,一个请求进来会先调用m1中间件,然后next到m2中间件,再next到m3中间件,m3下游没有更多中间件之后,可以理解到了中心点,然后依次出去,经过m3,再经过m2,最后是m1
// app.js
// require引入 app.use()调用
const Koa = require('koa')
const app = new Koa()
const m1 = require('./middleware/m1')
const m2 = require('./middleware/m2')
const m3 = require('./middleware/m3')
// middlewares
app.use(m1())
app.use(m2())
app.use(m3())
app.listen(3000);
// /middleware/m1.js
function m1 (ctx) {
// ctx 全局对象
global.console.log('m1')
}
module.exports = function() {
return async function(ctx, next) {
global.console.log('m1 start')
m1(ctx)
// 上面的中间件运行完毕 下面一行代码表示 下一个中间件运行
await next()
global.console.log('m1 end')
}
}
// m2.js m3.js同理 只是改变将m1替换为m2 m3
有请求进来时,看下面的日志顺序
ps
mkdir middleware 创建middleware文件夹
touch middleware/koa-pv.js middleware文件夹下创建koa-pv.js文件
谢谢你阅读到了最后
期待你,点赞、评论、交流