KOA2
基于node.js平台的web服务器框架
Express.Koa(这个已经淘汰不用),Koa2都是web服务器的框架
Express异步处理:回调函数;
Koa异步处理:Generator+yield
Koa2异步处理:async/await
由于Koa2支持async/await,所以它要求Node的版本至少(最低)是7.6。因为async/await是在Node7.6版本之后出现才支持的
在Koa2的世界中,服务器处理请求的那一块程序,被称为中间件
洋葱模型:中间件对请求的处理有一种先进后出的感觉,调用顺序类似于:1-2-3-4-3-2-1,除了中间那一层,其余都对请求处理了两次
Koa2的快速上手
1.检查Node
先检查Node的版本,是否是7.6及以上
node -v
2.安装Koa2
npm init -y
这一步可以创建出package.json的文件,这个文件可以维护向中的第三包的信息
npm install koa
3.编写入口文件
在项目目录下创建一个js文件(app.js)
3.1创建koa对象
const Koa = require('koa'); //导入构造方法
const app = new Koa(); //创建实例对象
3.2编写响应函数(中间件)
响应函数(.use(ctx,next))
ctx:上下文。指的是请求所处在的Web容器,我们可以通过ctx.request拿到请求对象,也可以通过response拿到响应对象。
next:内层(下一个)中间件执行的入口
const Koa = require('koa');
const app = new Koa();
/* 这是一个中间件.use() 里面放的是一个回调函数
只有一个请求, 一个响应 */
app.use(function(ctx, next) {
// 显示我们请求的路径
// console.log(ctx.request.url);
ctx.response.body = "hello world";
console.log(1111); //第一个输出
next();
console.log(3333); //第三个输出
})
app.use(function(ctx) {
// 显示我们请求的路径
// console.log(ctx.request.url);
console.log(2222); //第二输出
ctx.response.body = "hello world!!!!!";
})
//端口号自定义,不要冲突
app.listen(8080);
3.3指明端口号
app.listen(8080)
4.启动服务器:
node 文件名
node app.js
然后在浏览器输入:**127.0.0.1:8080/(或者localhost:8080/)**查看效果
拿promise里面的数据,有两个方式:
1.通过next().then()获取
const Koa = require('koa');
const app = new Koa();
app.use(function(ctx, next) {
ctx.response.body = "hello world";
next().then(function(data) {
console.log(data); //123456
});
})
app.use(function(ctx) {
return 123456;
})
app.listen(8080);
2.通过async/await获取
const Koa = require('koa');
const app = new Koa();
app.use(async function(ctx, next) {
ctx.response.body = "hello world";
var aa = await next();
console.log(aa);
})
app.use(function(ctx) {
return 123456;
})
app.listen(8080);