diff --git a/examples/conditional-middleware-middleware.js b/examples/conditional-middleware-middleware.js new file mode 100644 index 0000000..741ae55 --- /dev/null +++ b/examples/conditional-middleware-middleware.js @@ -0,0 +1,41 @@ + +var http = require('http'); +var koa = require('..'); +var app = koa(); + +// logger + +function logger(next){ + return function *(){ + var start = new Date; + yield next; + var ms = new Date - start; + console.log('%s %s - %s', this.method, this.url, ms); + } +} + +function ignoreAssets(mw) { + return function(next){ + return function *(){ + if (/(\.js|\.css|\.ico)$/.test(this.path)) { + yield next; + } else { + yield mw(next); + } + } + } +} + +app.use(ignoreAssets(logger)); + +// sometimes it's useful to apply some +// ad-hoc logic to enable middleware, for +// example ignoring a logger on asset requests: + +app.use(function(next){ + return function *(){ + this.body = 'Hello World'; + } +}); + +app.listen(3000);