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

2018-10-27  本文已影响16人  IsaacHHH

手写一个超简单的中间件

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

mkdir logmiddleware && cd logmiddleware

npm install -S koa

const Koa = require('koa');
const app = new Koa();

// 这里我们使用一个中间件


app.listen(3000);

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

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

module.exports = options => {
    if (!options.format) {
        console.log('需要传递format参数');
    }
    return async (ctx, next) => {
        console.log(options.format(ctx.url));
        await next();
    }
}

这里我们引入刚才的中间件,并且传递了一个对象,对象中含有一个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

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

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

上一篇下一篇

猜你喜欢

热点阅读