用传统的express,还是更加潮流的koa,或者是文档毕竟全的框架。一些毕竟适中的框架,比如sails,你们都在用什么,或者是以后准备学什么。大家来交流交流
来自酷炫的 CNodeMD
@liygheart 既然express不需要额外引入,你觉得koa需要引入吗?个人开发体验,koa2 比 express舒服些,以前用的是express,现在也有部分项目在用。和 koa2 一开始就拥抱 async/await 分不开
@DevinXian 说到底还是习惯的问题,我一直用的是express,之前不支持async/await,要引入其它依赖来支持,所以多少有点不方便,koa/koa2都没怎么用过,看了下介绍,除了支持同步,其它就是把功能拆分出来了,所以还是继续用express
自己写了个基于express和typescript的框架, https://github.com/loon-project/loon 用ts配合vs code很省心
看来重要的事要说三次:
Egg 1.x 版本完全支持 async,完全支持 koa2 的中间件 Egg 1.x 版本完全支持 async,完全支持 koa2 的中间件 Egg 1.x 版本完全支持 async,完全支持 koa2 的中间件
只要你使用的 node 7.6+,就可以放心的使用,至于 egg 底层用的是不是 koa2,完全不用 care,我们已经早就兼容了,并且所有的插件的 ci 都是跑 6,7,8 的。
https://github.com/eggjs/egg-core/blob/master/lib/utils/index.js#L39
https://github.com/eggjs/benchmark
以大部分国内的业务规模来看,还达不到需要拼框架的 generator 和 async 这点性能的程度。
@zbsccc 那就是个人喜好问题了,跟性能没啥关系。 然而,框架内部是什么,你在应用开发的时候又看不到,只要在应用代码里面全部是 async 不就行了。 而且就算你现在直接用 Koa2,它的子依赖你就确信没有类似的兼容,请问这个你要不要忍呢? 话说, node 8 现在还不是 LTS,async 也只是 generator 的语法糖而已,我们的洗影MM(Node CTC 成员) 说它还是有很多问题的,慎用。
@ilovedesert001 Koa 是洋葱模型,一来一回。正好相反,很多 express 的插件,改用 Koa 写则非常非常的简单。
所有的请求经过一个中间件的时候都会执行两次,对比 Express 形式的中间件,Koa 的模型可以非常方便的实现后置处理逻辑,对比 Koa 和 Express 的 Compress 中间件就可以明显的感受到 Koa 中间件模型的优势。
- koa-compress for Koa.
- compression for Express.
最早用 Express,后来写纯 API 时用 Restify,现在用 Egg.js。看了 Egg.js 的文档后发现它的设计思路和模式与我自己实践中形成的一套基本相同,而实现得更完善和深入,所以理所当然地就迁移过来了。 From Noder
两个项目用到了egg,感觉还不错,用起来挺省心的,但有一个问题,egg如何做代码提示? 由于egg自己实现的模块加载,没法用 ts的 声明文件(*.d.ts)做代码提示,不知各位有什么法子
@i5ting 没看懂上下文,ts 我只是说我们有 example,并不是说我们推荐业务用 ts。
另外, ts 跟 egg 也没啥关系,不管你用 koa,express,egg,只要你用 ts,都一样需要编译
看情况而定。为啥没有提及loopback。。。。。。多么牛逼的东西。。。 restify 也挺好。。。。express 也够了。。就不像折腾什么koa,egg,反正nodejs V8.0 以后版本也支持async了。。。 其实还是callback 效率高,直观
@qingmingsang 可以看下 https://eggjs.org/zh-cn/intro/egg-and-koa.html#middleware 下面的两个中间件对比下。 express 是线性的,koa 才是洋葱的。
@atian25 除了一句话说不同,并没有看到具体的对比。 我以前有写过一个执行的对比,所以我才认为他们是一样的 http://www.cnblogs.com/qingmingsang/articles/6019219.html
文档里面不是列出了 2 个链接给看源码么?
- https://github.com/koajs/compress/blob/master/index.js
- https://github.com/expressjs/compression/blob/master/index.js
如果看不懂,那可以对比个简单的:
- https://github.com/expressjs/response-time/blob/master/index.js
- https://github.com/koajs/response-time/blob/master/index.js
很久没碰 express,你那个示例有问题的,你改为异步的就知道了,在其中一个 middleware 里面的改为 setTimeout 里面 next()。