koa---基础了解

1.级联

const Koa = require('koa')
const app = new Koa()

const indent = (n) => new Array(n).join(' ')

// 初始化koa实例后,use方法来加载中间件(middleware),此时会有一个数组来存储中间件
// 每个中间件都是一个函数(不是函数将报错),接收两个参数,第一个是ctx上下文对象,另一个是next函数(由koa-compose定义)
// koa官方文档上把外层的中间件称为"上游",内层的中间件为"下游"。
const mid1 = async (ctx,next)=>{
    ctx.body = '<h3>第一次请求</h3>'
    console.log(1111111111)
    // 中间件函数中调用next方法就会去取下一个中间件函数继续执行,
    // 调用next方法并不是表示当前中间件函数执行完毕了,调用next之后仍可以继续执行其他代码
    await next() 
    // 中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件。
    // 当在下游(内层)没有更多的中间件执行后,堆栈将展开并且每个中间件恢复执行其上游行为。
    ctx.body += '<h3>第一次响应</h3>'
    console.log(222222222222222)
}
// 每个中间件函数执行完毕后都会返回一个promise对象
// 多个中间件会形成一个栈结构(middle stack),以“先进后出”(first-in-last-out)的顺序执行
const mid2 = async(ctx,next)=>{
    ctx.body += `<h3>${indent(4)}第二次请求</h3>`
    console.log(333333333333333333)
    await next()
    ctx.body += `<h3>${indent(4)}第二次响应</h3>`
    console.log(4444444444444444)
}


const mid3 = async (ctx,next)=>{
    ctx.body += `<h3>${indent(8)}第三次请求</h3>`
    console.log(55555555555555555)
    await next()
    ctx.body += `<h3>${indent(8)}第三次响应</h3>`
    console.log(6666666666666666)
}

// use调用顺序会决定中间件的执行顺序
app.use(mid1)
app.use(mid2)
app.use(mid3)

app.listen(5656)

// koa对中间件的处理遵循洋葱模型,从外到里,再从里到外
// 1111111111
// 333333333333333300
// 55555555555555550
// 6666666666666666
// 4444444444444444
// 222222222222222
// 1111111111
// 333333333333333300
// 55555555555555550
// 6666666666666666
// 4444444444444444
// 222222222222222

2.app.listen(…)
app.listen(…) 方法是以下方法的语法糖:

const http = require('http');
const Koa = require('koa');
const app = new Koa();
http.createServer(app.callback()).listen(3000);

3.app.callback()
返回适用于 http.createServer() 方法的回调函数,用于处理请求。可以使用此回调函数将 koa 应用程序挂载到 Connect/Express 应用程序中。
4.app.use(function)
将给定的中间件方法添加到此应用程序
5.上下文(Context)
Koa Context 将 node 的 request 和 response 对象封装到单个对象中,每个_请求都将创建一个 Context,并在中间件中作为接收器引用,或者 ctx 标识符

app.use(async ctx => {
  ctx; // 这是 Context
  ctx.request; // 这是 koa Request
  ctx.response; // 这是 koa Response
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值