Koa 和 Express 的区别

title

Koa 和 Express 的区别

一、Express和Koa分别是什么?

Express :

Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。

express
Koa:

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

在这里插入图片描述
从两个官方的介绍中,我们可以得到这样子的信息:

  1. KoaExpress 是同一批人写的,他们是血亲;
  2. KoaExpress 更加新。

好了,第一点我们都很好理解。第二点,我们就有点疑惑了!KoaExpress到底新在哪里呢?
emm,我们继续阅览Koa的官方文档我们可以发现这样子的信息:

Koa 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持.

那么 这时候我们就想了,Express最低支持Nodejs什么版本呢~

Express官方网站上并没有明确指出最低的支持版本,但是我们从Express历史版本中找到了一些对依赖的介绍。我们发现,Express作为一个成名很早的Nodejs web框架,他几乎是随着Nodejs的发展而逐步升级的!所以,我们可以认为Express几乎支持任何版本的Nodejs!

好了,我们了解了对比的双方各是什么之后。我们就要来进入今天的主题!ExpressKoa的区别了!

二、Express Vs Koa

2.1 编程模型的不同

使用过Express的小伙伴应该对其中间件的概念不陌生吧!我们都知道Express的中间接处理有点像排队!请求进入这个中间件"队列"会被一个一个的处理后返回响应。

Koa在这点上就有所不同啦~下图就是一个很经典的描述Koa模型
Koa中间件模型
emm,我们可以看得出来,ExpressKoa的第一个区别:

编程模型上的区别。Koa 的中间件是U型的,Express的中间件是线性的。

2.2 语言特性上的不同

Express在处理中间件的时候,是使用回调函数。而熟悉javaScript的同学,在Promise没出来之前是深受回调地狱的困扰!而Koa在一开始就注意到这个问题!使用了ES2015带来的新特性,让整个中间件处理很像同步代码~

2.3 功能不同

这里我引用Koagithub上的一个讨论:

Philosophically, Koa aims to “fix and replace node”, whereas Express “augments node”. Koa uses promises and async functions to rid apps of callback hell and simplify error handling. It exposes its own ctx.request and ctx.response objects instead of node’s req and res objects.
Express, on the other hand, augments node’s req and res objects with additional properties and methods and includes many other “framework” features, such as routing and templating, which Koa does not.

上面的这段话字面意思是说,Koa是为了修复并且替代Nodejs。它使用Promises和async函数去解决回调地狱问题并且简化了错误的处理。Koa用自己的处理请求和响应的对象替代Nodejs的。
Express是为了增强Nodejs。它基于Nodejs增加了一些属性和方法,提供了路由和模板功能!这些恰恰是Koa没有的!就如下图的对比一样!

express-vs-koa
因此我们可以认为,Koa正如他的介绍身上说的那样,不依赖任何中间件。他比Express更加轻便!

三、总结

我们总结一下。
Express的优缺点:
优点:

  • 功能全面,拥有路由、模板等框架常见功能;
  • 不需要了解ES2015的知识就可以上手,学习成本低。

缺点:

  • 回调地狱问题;
  • 很难处理错误异常。

Koa的优缺点:
优点:

  • 没有回调地狱问题;
  • 需要有es2015的知识基础,学习成本高!

如果,你是一个爱折腾的喜欢新事物的人。我觉得可以考虑一下Koa!毕竟学无止境啊!骚年!加油吧!

– end –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值