alibaba / plover

专注于模块化的NodeJs Web框架
Apache License 2.0
255 stars 68 forks source link

我也一直在考虑写这样一种类型的纯净的基础框架。但是在express和koa之间如何选择呢? #29

Closed ryouaki closed 7 years ago

ryouaki commented 8 years ago

选择的依据是什么呢? express 现在也开始分离部分module。也开始像koa那样轻装上阵,并且有庞大的第三方中间件群支撑。 koa虽然也很流行。也有很多第三方中间件。据说koa性能要比express好很多。但是语法略微很奇怪。

谁能解释一下呢?

bencode commented 8 years ago

@ryouaki koa是基于es6的generator function这个语言特性的,主要解决了原先nodejs回调地狱这个严重的问题。具体的可以参考一些资料:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/function*
http://www.ruanyifeng.com/blog/2015/04/generator.html

ryouaki commented 7 years ago

我一直使用promise和async这两个库,感觉还可以,也没有遇到大业务。还没遇到地狱级别的回调。

而且nodejs6 以后就开始支持promise,7以后支持async和await。那还有使用koa的必要么?

bencode commented 7 years ago

@ryouaki koa是一个web框架,它类似于express,如果你要做web应用就可以选择它。如果不开发web应用,比如使用nodejs开发一些工具,那就完全不需要使用。

generator function和async/await是语言的特性,用它们可以优雅地解决地狱回调的问题。 虽然promise, async等库可以在lib级别一定程度上解决这个问题,但是还是不够直接。

koa是基于es6的generator function这个特性实现的。
koa2是基于async/await特性实现的。 express是使用原来的回调方式实现的。

所以你可以根据自己的生产环境是什么来选用。

ryouaki commented 7 years ago

谢谢,之前一直困惑是因为很多人都推荐koa,但是一问他们自己正式环境用什么,却都用expressjs。感觉很困惑。 而且目前nodejs都是小微项目。只要是没太多值得关注的坑的话,比如安全性,稳定性,性能这几个方面约束不大。那就真的无所谓了。选哪个全凭喜好。