express和koa的middleware没区别吧?
发布于 8 年前 作者 rwing 4971 次浏览 来自 问答

两者无论写法,还是执行顺序,也没啥区别啊,区别是啥???

var app = require('express')();
app.use(function myMiddleware(req, res, next) {  
  res.write('Hello world.');
  next();
});
app.use(function mySecondMiddleware(req, res) {  
  res.write('\nI am a second middleware.');
  res.end();
});

var app = require('koa')();
app.use(function* myMiddleware(next) {  
  this.response.body = 'Hello world.';
  yield next;
});

app.use(function* mySecondMiddleware() {  
  this.response.body += '\nI am a second middleware.';
});
7 回复

koa不建议

app.use(function* mySecondMiddleware() {  
  this.response.body += '\nI am a second middleware.';
});

吧?

简单来说,用koa2,async/await,让你代码量少很多!本人已经大量实践这个了

看这个帖子,https://cnodejs.org/topic/5813d794b37ee8fb339788f1 ,但不推荐这样玩,1楼说的对,generator已经很少了,koa2 推荐async /await + promise

两种中间件模型不一样,express只经过一次,koa是洋葱模型,在yield next之后还能加逻辑。express得靠hack。 自豪地采用 CNodeJS ionic

@i5ting @stark-mk 这个明白,可是也没啥根本区别啊,或者这么说,如何说服别人用koa的这种中间件模型而不用express的?

@rwing 保持编程风格统一…这是第一反应… async/await友好好用

@rwing 最关键就是promise的支持啊. 当然了, 我也不喜欢koa2这种过度封装的模式. 你要是感兴趣, 也可以看看这个use-server,兼容express,支持promise

koa太轻,要自己选一堆东西,选择困难症患者表示不舒服。

回到顶部