一段代码演示koa的洋葱模型

用一段代码演示,有助于理解koa的洋葱模型,访问如下两个地址:

http://localhost:3000/#aid:222/#aname:333

http://localhost:3000/news/222/333

结合源码看后台打印的效果。

const Koa = require('koa')
const router = require('koa-router')()  //直接实例化的写法,不需要再new了

const app = new Koa()
// const router = new Router()

//路由级中间件
router.get('/',async (ctx,next)=>{
  console.log('3、路由级中间件拦截:'+new Date())
  await next()
  console.log('返回3、路由级中间件拦截:'+new Date())
})
//路由
router.get('/', async (ctx)=>{//http://localhost:3000/#aid:222/#aname:333
  ctx.body = '首页+动态路由:get传值'
  console.log('4、干正事儿*********')
  console.log(ctx.query)  
})

.get('/news/:aid/:aname', async (ctx)=>{//http://localhost:3000/news/222/333 //二级页面,不受一级页面拦截
  ctx.body = '二级页面:新闻页+动态路由restful传值'
  console.log('4、二级页面·干正事儿*********')
  console.log(ctx.params) 
})

//应用级中间件,不受代码位置影响,优先于路由中间件(app.get等)执行
app.use(async (ctx,next)=>{
  console.log('1、应用级中间件拦截:'+new Date())
  await next()
  console.log('返回1、应用级中间件拦截:'+new Date())

  if(ctx.status==404){
    ctx.status=404
    ctx.body='404 404 404 404 404 404 404 404 '
  }
})

app.use(async (ctx,next)=>{
  console.log('2、应用级中间件二')
  await next()
  console.log('返回2、应用级中间件二')
})

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值