乐趣区

关于java:前端面试Koa与Express的区别

前端面试—Koa 与 Express 的区别

<!– more –>

博客阐明

文章所波及的材料来自互联网整顿和集体总结,意在于集体学习和教训汇总,如有什么中央侵权,请分割自己删除,谢谢!

介绍

Koa
  • 基于 node 的一个 web 开发框架,利用 co 作为底层运行框架,利用 Generator 的个性,实现“无回调”的异步解决;
  • ES7;
  • 更小、更富裕表现力、更强壮的基石;
  • 利用 async 函数、Koa 抛弃回调函数,加强错误处理;
  • 很小的体积,因为没有捆绑任何中间件;
  • 相似堆栈的形式组织和执行;
  • 低级中间件层中提供高级“语法糖”,进步了互操性、稳健性;
Express
  • Node 的根底框架,根底 Connect 中间件,本身封装了路由、视图解决等性能;
  • 线性逻辑,路由和中间件完满交融,清晰明了;
  • 弊病是 callback 回调形式,不可组合、异样不可捕捉;
  • ES5;
  • connect 的执行流程:connect 的中间件模型是线性的,即一个一个往下执行;

区别

  • Handler 的解决

    Express 一般回调函数,在同一线程上实现以后过程的所有 Http 申请;Koa 利用 Generator Function 作为响应器,co 作为底层运行框架,利用 Generator 个性,实现“协程响应”;
  • 路由

    Express 的路由是本身集成的;Koa 的须要引入中间件 Koa-router;
  • 启动形式

    koa 采纳 new Koa()
    express 采纳传统的函数模式 function;
  • 回调

    Koa 没有回调
    express 有回调;
  • Http Request

    koa1 应用 this 取代 Express 的 req、res;
  • Context

    Koa 新增了一个 Context 对象,用来代替 Express 的 Request 和 Response,作为申请的上下文对象。还有 Node 原生提供的 req、res、socket 等对象;
  • 生命周期

    Express 的生命周期不确定:express 外部执行异步函数,不能确定什么时候执行完;Koa 确定:koa 是基于 await/async,在执行下一步操作的时候,必须期待前端 await 执行完;
  • 异步流程

     Express 采纳 callback 来解决异步 (ES5);Koa1 采纳 generator(ES6);Koa2 采纳 async/await(ES7);
  • 错误处理

     Express 应用 callback 捕捉异样,深层次的异样捕捉不了;Koa 应用 try catch,很好的解决异样捕捉;
  • 中间件

     koa2 的中间件:1、通过 async await 实现的,中间件执行的程序是“洋葱圈”模型。2、中间件之间通过 next 函数分割,当一个中间件调用 next() 后,会将控制权交给下一个中间件,直到下一个中间件不再执行 next() 后,会沿路返回,将控制权交给前一个中间件。Express 中间件:1、一个接一个程序执行,response 响应写在最初一个中间件中。2、特点:a.app.use 用来注册中间件;b. 遇到 http 申请,依据 path 和 method 判断触发哪些中间件;c. 实现 next 机制,即上一个中间件会通过 next 触发下一个中间件;

感激

以及勤奋的本人,集体博客,GitHub

退出移动版