同意this
的问题, 部分赞成重复造轮子
(或者理解为不兼容express). 其他就不能同意了.
且不管async/await来了与否, express在promise上的支持度是硬伤. 如果能做到这样:
app.use(async (req, resp, next)=>{
console.log('start')
await next()
console.log('end')
})
那才是最吼的
区分一下版本好吗?koa 1.x是this,但2.x是ctx,不在this,而且说了generator方式可能会在v3.x干掉
@kiliwak 这种写法koa一样支持,几十行代码就可以搞定,没啥劲,你发现集成已有express插件的时候就挂掉了。。。。
@i5ting 能举个栗子是哪个插件会挂掉吗? 我还没碰到过哪, 让我试试
@kiliwak await后面就2种情形,1)async函数 2)promise 3)co返回promise的generator,这个稍微牵强。可是你的中间件的next返回的是啥呢?想想
@i5ting hai! 咱俩说的前提都不一致. 我说的await next()
是要改造express, 让next()
也返回一个promise. 并不是现在的express里的next模式. 你可以看看这个use-server
express为什么到现在还不发5呢?都alpha好久了。。。。
我觉得koa真正的问题是中间件的轮子没有express丰富吧,koa 2.x更好的支持了async/await,next的语意比express中的要科学,要使用async/await或者promise的话建议koa 2.x,喜欢回调的话express好一点
来自酷炫的 CNodeMD
怎么还有人拿koa1.来说事
文章基本是在说“因为Koa不符合我的编程习惯和思想,所以这些地方都是Koa的坑,而且我自己粗心没处理好作用域链导致调错this的问题也都怪Koa用了this,顺便预言一下未来JS的趋势是按照Express特性来发展的”。 最近是Express党和Koa党准备开战了吗?好多帖子都在黑Koa,说Koa是不稳定的、缺乏支持的、实验性的玩具。黑人问号的我不禁开始怀疑我是如何用Koa1开发支撑百万用户的服务且稳定持续集成产品化一年多的?~难不成我的服务器找高僧开过光了?
那么,问题来了,PHP和Python究竟哪个才是世界上最好的语言呢?
说点理性的吧,每一个技术、库、框架都有自己的特性和思想的以及适用的场景的,软件工程上没有银弹。 用NoSQL存储关系模型会觉得NoSQL难用,用SQL存储文档模型同样会觉得SQL难用。