koa

时间:2024-09-30 10:13:04编辑:小星

koa2、koa1、express比较

   在koa中,一切的流程都是中间件,数据流向遵循洋葱模型,先入后出,是按照类似堆栈的方式组织和执行的, koa-compose是理解koa中间件的关键,在koa中间件中会深入分析。   koa2与koa1的最大区别是koa2实现异步是通过async/awaite,koa1实现异步是通过generator/yield,而express实现异步是通过回调函数的方式。   koa2与express 提供的API大致相同,express是大而全,内置了大多数的中间件,更让人省心,koa2不绑定任何的框架,干净简洁,小而精,更容易实现定制化,扩展性好。   express是没有提供ctx来提供上下流服务,需要更多的手动处理,express本身是不支持洋葱模型的数据流入流出能力的,需要引入其他的插件。   koa的数据流入流出,next()后,会进入下一个中间件并执行,然后从最后一个中间件反向执行。   这种这行方式,看起来很像是递归操作:   递归存在着栈溢出问题,有可能把js引擎卡死,koa采用的是一种尾调用的方式进行了性能优化。

express和koa的区别

express和koa从整体上来看,koa是比express更加轻量,他没有内置的各种中间件的支持,更集中于请求处理。当然在express 4.0以后,也移除了一批中间件支持,向轻量化进发。这一点上差别其实不是特别大了。 最大的差别是中间件和回调的处理逻辑。express采用的是callback,koa采用的是async,这样在执行上express的callback中就天然不支持异步的处理,在express中处理异步可能不是你想要的执行顺序。在这里,就有了koa的经典:洋葱模型。 除此之外,koa在响应上添加了上下文的概念,使用ctx存储各种响应信息,避免直接操作res。ctx能更好的帮助我们在多层级处理中传递信息,例如ctx.body可以多层级进行组合返回数据。 express 3 -> 4 之后,移除了一大批中间件,其中和我们关系比较大的是bodyParser、compress、cookieSession、cookieParser、static、directory等。 除此之外,4改变了路由注册的方式(增量式),增加了app.route、router = express.Router()的方式,中间件的app.use也支持path的注册。详见 Moving to Express 4 。 传送门 express和koa的区别

上一篇:大波浪卷发发型图片

下一篇:没有了