Koa 介绍

  1. 官网

  2. GitHub 仓库

  3. 民间中文网

  4. Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造,致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石;

    • Koa 1 是基于 ES2015 中的 Generator 生成器函数结合 CO 模块;
    • Koa 2 完全抛弃了 GeneratorCO ,升级为了 ES2017 中的 async/await 函数;

对比 Express

更轻量

  1. express 的基础上进一步简化了框架;

  2. 这些简化表现在下面两个方面:

    • koa 没有内置的中间件;
    • koa 不提供路由匹配;

更合理的对象结构

  1. express 的主要操作对象有 appreqres,它们的逻辑关系如下:

  2. koa 中,它的主要操作对象有 appcontextrequestresponse,它们的逻辑关系如下:

更友好的中间件支持

  1. Express 并不支持异步中间件

  2. koa 最大的优势,就是它支持异步中间件,从而提供了基于合理的中间件模型

  1. Express 的中间件示例

    function delay(duration){
      return new Promise(resolve=>{
        setTimeout(()=>{
          resolve();
        }, duration)
      })
    }
    // 中间件1
    app.use(function(req, res, next){
      console.log(1);
      next();
      console.log(4);
    })
    // 中间件2
    app.use(async function(req, res, next){
      console.log(2);
      await delay(1000);
      console.log(3);
    })
    // 得到的结果:1 2 4 3
    
  2. Koa 的中间件示例

    function delay(duration){
      return new Promise(resolve=>{
        setTimeout(()=>{
          resolve();
        }, duration)
      })
    }
    // 中间件1
    app.use(async function(ctx, next){
      console.log(1);
      await next();
      console.log(4);
    })
    // 中间件2
    app.use(async function(req, res, next){
      console.log(2);
      await delay(1000);
      console.log(3);
    })
    // 得到的结果:1 2 3 4
    
  3. 可以看到,对于每个 Koa 中间件,在完成了一些事情后,可以非常优雅的将控制权传递给下一个中间件 并能够等待它完成 ,当后续的中间件完成处理后,控制权又回到了自己,这种中间件模型称之为洋葱模型;

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. Koa 介绍
  2. 2. 对比 Express
    1. 2.1. 更轻量
    2. 2.2. 更合理的对象结构
    3. 2.3. 更友好的中间件支持