一、Koa2的介绍
1)介绍
- 是基于Node.js平台的web开发框架
- 是Express原班人马打造的,它们处理异步任务的方式分别是:
- 因为Koa2是使用async/await处理异步任务,因此对Node的版本有要求,需要是v7.6.0及以上
2)特点
- 支持async/await
- 洋葱模型的中间件
二、Koa2的使用
1)检查Node的环境 node -v
2)安装Koa
① npm init -y 在当前文件夹中创建package.json文件,这个文件帮助维护第三方包的信息
② npm install koa 在线联网下载,将koa下载在当前目录之下,这里在线下载默认是下载最新版本,最新版本的koa就是koa2
3)创建并编写app.js文件
①创建Koa对象
②编写响应函数(中间件)
③监听端口
4)启动服务器 node app.js
//1.创建koa对象
const Koa = require('koa') //通过require的形式将koa的包引进来,得到了一个构造函数Koa
const app = new Koa() //通过构造函数创建一个koa的实例对象
//2.编写响应函数(中间件)
// ctx代表的是上下文,指的是web容器,能够通过ctx使用request和response ctx.response,ctx.request
//next代表下一个中间件,下一层中间件是否能够得到执行,取决于next这个函数有没有被调用
app.use((ctx, next) => {
console.log(ctx.request.url);//得到当前请求的url
ctx.response.body = 'hello world' //把响应体设置为hello world
}) //将响应函数通过use的方式应用到koa身上
// 3.绑定端口号(暂定3000)
app.listen(3000)
中间件的特点:
-
Koa对象通过use方法加入一个中间件
-
一个中间件就是一个函数
-
中间件的执行顺序符合洋葱模型
这个洋葱模型的执行过程,首先发出的请求先到达第一层中间件,对请求进行处理之后回到第二层中间件,在第二层中间件中处理完成之后,接着到第三层中间件,处理完之后到第二层中间件,最后到第一层中间件,直到将这个请求响应到前端浏览器中。
-
内层中间件能否执行取决于外层中间件的next函数是否调用
// 第一层中间件 app.use((ctx, next) => { console.log('第一层中间件'); next() //这里加上next()才能够执行下一个中间件 //第二层中间件执行完毕之后,会回到第一层中间件next()执行的地方接着执行下边的内容 console.log('第一层中间件执行next之后。。。'); }) //将响应函数通过use的方式应用到koa身上 // 第二层中间件 app.use((ctx, next) => { console.log('第二层中间件'); next() //第三层中间件执行完毕之后,会回到第二层中间件next()执行的地方接着执行下边的内容 console.log('第二层中间件执行next之后。。。'); }) // 第三层中间件 app.use((ctx, next) => { console.log('第三层中间件'); })
-
调用next函数得到的是Promise对象,要想获得Promise对象中包含的数据,需要加await和async
// 第二层中间件 app.use(async (ctx, next) => { console.log('第二层中间件'); const ret = await next() //如果不加await和async,得到的是Promise对象 console.log(ret); //第三层中间件执行完毕之后,会回到第二层中间件next()执行的地方接着执行下边的内容 console.log('第二层中间件执行next之后。。。'); }) // 第三层中间件 app.use((ctx, next) => { console.log('第三层中间件'); return 'i love yan' })
app.use(async(ctx,next)=>{ //刚进入中间件想做的事情 await next() //内层所有中间件结束之后想做的事情 })