KoaJS 中间件函数

  • 定义和使用

    中间件函数是可以访问上下文对象和应用程序请求-响应周期中下一个中间件函数的函数。这些函数用于修改任务的请求和响应对象,如解析请求正文、添加响应头等。Koa 通过生成 "下文",然后将控件流回 "上文" 而进一步。这种效应称为级联效应。
  • 示例

    下面是一个运行中的中间件函数的简单示例。
    var koa = require('koa');
    var app = new koa();
    
    //简单请求时间记录器
    app.use(function* (next) {
        console.log("在收到新请求:" + Date.now());
        
        //这个函数调用非常重要。它表明更多的处理是
        //当前请求所必需的,并且位于下一个中间件函数/路由处理程序中。
        yield next;
    });
    
    app.listen(3001);
    
    
    服务器上的每个请求都会调用上述中间件。因此,在每个请求之后,我们将在控制台中收到以下消息。
    在收到新请求:1467267512545
    
    为了将它限制到一个特定的路由(及其所有的子路由),我们只需要像创建路由一样创建路由。实际上,这些中间件只处理我们的请求。
    var koa = require('koa');
    var router = require('koa-router'); 
    var app = new koa();
    
    var _router = router();   //实例化路由器
    _router.get('/request/*', function* (next) {
        console.log("在收到新请求:" + Date.now());
        yield next;
     });
    
    app.use(_router.routes());  //使用路由器定义的路由
    
    app.listen(3001);
    
    现在每当你请求 '/request' 的任何子路径时,它才会记录时间。
  • 中间件调用顺序

    关于 Koa 中间件最重要的一点是,它们在文件中的 写入/包含 顺序是它们在下游执行的顺序。一旦我们在中间件中找到一个 yield 语句,它就会切换到下一个中间件,直到我们到达最后一个。然后我们再次开始向上移动并从 yield 语句恢复函数。
    例如,在下面的代码片段中,第一个函数先执行到 yield,然后执行第二个中间件直到 yield,然后执行第三个。由于这里没有更多的中间件,我们开始向上移动,以相反的顺序执行,即第三、第二、第一。这个例子总结了如何使用 Koa 方式的中间件。
    var koa = require('koa');
    var app = new koa();
    
    //中间件订单
    app.use(first);
    app.use(second);
    app.use(third);
    
    function *first(next) {
        console.log("I'll be logged first. ");
        yield next;
        console.log("I'll be logged last. ");
    };
    
    function *second(next) {
        console.log("I'll be logged second. ");
        yield next;
        console.log("I'll be logged fifth. ");
    };
    
    function *third(next) {
        console.log("I'll be logged third. ");
        yield next;
        console.log("I'll be logged fourth. ");
    };
    
    app.listen(3001);
    
    
    运行此代码后访问 "/" 时,在控制台上我们将得到-
    I'll be logged first. 
    I'll be logged second. 
    I'll be logged third. 
    I'll be logged fourth. 
    I'll be logged fifth. 
    I'll be logged last. 
    
    既然我们知道了如何创建自己的中间件,让我们来讨论一些最常用的社区创建的中间件。
    现在我们知道了如何创建自己的中间件,让我们讨论一些最常用的社区创建的中间件。以下是一些最常用的中间件-
    • koa-bodyparser
    • koa-router
    • koa-static
    • koa-compress
    我们将在后面的章节中讨论多个中间件。