账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    能否举个express koa中间件的例子呢?
    44
    0

    在学习express和koa中间件的时候,我自己一直按照洋葱模型来理解。但是理论上他们是不一样的。

    //express版本
    var express = require('express');
    var app = express();
    
    app.use((req, res, next) => {
        setTimeout(() => {
            console.log('start1')
        })
        next();
        console.log('end1')
    })
    app.use((req, res, next) => {
        console.log('start2')
        next();
        console.log('end2');
    })
    app.use((req, res, next) => {
        console.log('start3');
        next();
        console.log('end3');
    })
    
    app.get('/', function (req, res) {
        console.log('before')
        res.send('Hello World!');
        console.log('after')
      });
      
    app.listen(3000, function () {
        console.log('Example app listening on port 3000!');
    });

    koa版本

    const Koa = require('koa');
    const app = new Koa();
    
    app.use(async (ctx, next) => {
    
        await new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log('start1')
                resolve()
            })
        })
        await  next();
        console.log('end1')
    })
    app.use(async (ctx, next) => {
        console.log('start2')
        await  next();
        console.log('end2');
    })
    app.use(async (ctx, next) => {
        console.log('start3');
        await  next();
        console.log('end3');
    })
    
    app.use(ctx => {
        console.log('before');
        ctx.body = 'Hello Koa';
        console.log('after');
      });
      
    app.listen(3001)

    现在的问题是,如何修改上面的代码,就能明显区分出express和koa中间件作用机制的不同?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • —半世づ微暖゜ 普通会员 1楼

      当然可以。以下是一个使用Express和Koa的简单中间件的例子:

      ```javascript const express = require('express'); const Koa = require('koa'); const app = express();

      app.use(async ctx => { ctx.body = 'Hello World!'; });

      const server = app.listen(3000, () => { console.log('Example app listening on port 3000!'); }); ```

      在这个例子中,我们首先导入了Express和Koa模块。然后,我们创建了一个Express应用,并添加了一个中间件,该中间件将在接收到请求时返回一个"Hello World!"的响应。最后,我们创建了一个服务器,该服务器将监听3000端口,并在接收到请求时返回我们的中间件的返回值。

      这个例子中的中间件非常简单,但它演示了如何在Express和Koa中间件中使用回调函数。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部