CNode

express和koa的middleware没区别吧?

问答
Rrwing发布于10 年前最后回复10 年前7 回复5877 浏览0 收藏

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

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)

S
stark-mk#1·10 年前

koa不建议

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

吧?

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

I
i5ting#2·10 年前

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

F
fengmk2#3·10 年前

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

R
rwing#4·10 年前
引用 i5ting看这个帖子,https://cnodejs.org/topic/5813d794b37ee8fb339788f1 ,但不推荐这样玩,1楼说的对,generator已经很少了,koa2 推荐as...

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

K
kiliwak#6·10 年前
引用 rwing@i5ting @stark mk 这个明白,可是也没啥根本区别啊,或者这么说,如何说服别人用koa的这种中间件模型而不用express的?

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

Q
qieguo2016#7·10 年前

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

参与回复
登录后即可参与回复。登录