express handle 方法 在koa2 中有同样的替代方法吗?
发布于 6 年前 作者 lileilei 2694 次浏览 来自 问答

handle方法网上有解释: 它的作用就是将每对[req,res]进行逐级分发,作用在每个定义好的路由及中间件上,直到最后完成。

请大神再帮忙解释一下 handle方法的具体作用,以及koa2中可替代的方法是什么啊?

看了koa源码 createContext 是创建一个新的上下文,handleRequest 应该是执行中间件作用于当前上下文上有点像这个方法,但是这个方法必须穿第二个参数中间件方法我想让后面执行的都作用于当前上下文

以下是express 的效果

var express = require(‘express’) var app = express() var app2 = express() app.use((req, res, next) => { console.log(111) next() })

app.use((req, res, next) => { console.log(222) next() }) // app.use((req, res, next) => { // app2.handle(req, res) // }) app2.use((req, res, next) => { console.log(333) next() }) app2.use((req, res, next) => { console.log(444) next() }) app.listen(8000)

请求: 默认打印111 222 ,注释移除后 打印 111 222 333 444

1 回复

koa2 的模式

var koa = require(‘koa’) var app = new koa() var app2 = new koa() app.use(async (ctx, next) => { console.log(111) await next() })

app2.use(async (ctx, next) => { console.log(333) await next() }) app2.use(async (ctx, next) => { ctx.body = “跳转到我这里了!!!但是这里拿不到next了!!!” })

//在这里调用app2.的第二个中间件方法 app.use(async (ctx, next) => { await app2.handleRequest(ctx, app2.middleware[1]) })

app.use(async (ctx, next) => { console.log(222) await next() }) app.listen(8000)

回到顶部