美文网首页
手写一个超简单的Node中间件

手写一个超简单的Node中间件

作者: IsaacHHH | 来源:发表于2018-10-27 21:01 被阅读16次

    手写一个超简单的中间件

    一个很简单的中间件,其作用仅仅是打印出当前访问的URL。

    • 创建一个项目目录:

    mkdir logmiddleware && cd logmiddleware

    • 安装相关插件、依赖,这里我们使用了Koa:

    npm install -S koa

    • 新建index.js:
    const Koa = require('koa');
    const app = new Koa();
    
    // 这里我们使用一个中间件
    
    
    app.listen(3000);
    
    • 新建log.js文件:

    该文件是我们需写的一个中间件,该中间件需要我们传递一个对象作为参数,其中对象中包含一个format属性,是一个方法。

    如果熟悉中间件的原理,就会理解,所谓的中间件的实现,就是利用了async/await。

    module.exports = options => {
        if (!options.format) {
            console.log('需要传递format参数');
        }
        return async (ctx, next) => {
            console.log(options.format(ctx.url));
            await next();
        }
    }
    
    • 修改我们前面的index.js文件:

    这里我们引入刚才的中间件,并且传递了一个对象,对象中含有一个format函数,符合我们中间件的参数要求。该函数返回一个文本。

    const Koa = require('koa');
    const log = require('./log.js');
    
    const app = new Koa();
    config config = {
        format: text => text,
    }
    app.use(log(config))
    app.listen(3000);
    
    • 运行,执行node index.js命令

    node index.js

    此时,如果我们访问127.0.0.1:3000便会将请求URL打印出来。

    如果你发现打印了两次,其中有一个打印的值为:favicon.ico,可以不必理会,这是因为浏览器默认去请求网址icon所导致的。

    相关文章

      网友评论

          本文标题:手写一个超简单的Node中间件

          本文链接:https://www.haomeiwen.com/subject/gpqjtqtx.html