smart-middleware

1.0.1 • Public • Published

smart-middleware

Travis Build Status Coverage Status npm

Router middleware for koa.

feedbacks are welcome

cn api click here

Features

  • auto loading router
  • auto matching middleware by config

Installation

install with npm

npm install smart-middleware

Usage

/*step 1 app.js*/
var sm = require('smart-middleware');
var router = require('koa-router')();
var app = require('koa-router')();

var middlewares = [
                    {url: '/list',
                      fn: [function *(next){
                        "use strict";
                        this.body = '_m_1';
                        yield next;
                        this.body += '_end_1';
                      }, function *(next){
                        "use strict";
                        this.body += '_m_2';
                        yield next;
                        this.body += "_end_2";
                      }
                      ]},
                    {url: '\\^(?!/open)', fn: [function *(next){
                      "use strict";
                      this.body += '_m_3';
                      yield next;
                      this.body += '_end_3';
                    }, function *(next){
                      "use strict";
                      this.body += '_m_4';
                      yield next;
                      this.body += '_end_4';
                    }]}
                    ,{url: '\\^(/open)', fn: [function *(next){
                      this.body = '_m_1';
                      yield next;
                      this.body += '_end_1';
                    }]}
                  ];
sm.autoLoading({router: router/*required*/, middleware:middlewares, path:__dirname +'/routers'/*required absolute path*/});
app.use(router.routes());


/*step 2 /routers/user.js*/
module.exports = function(router){
  router.get('/list', function *(next){
    this.body += '/list';
  });
  router.get('/open/user', function *(next){
    this.body += '/open/user';
  });
};
  • when you visited the '/list' url , the response body is _m_1_m_2_m_3_m_4/list_end_4_end_3_end_2_end_1
  • when you visited the '/open/user' url , the response body is _m_1/open/user_end_1

middleware roles

  • template: {url: 'url', fn: [m1,m2]}
  • if template.url beginning with '\\', it will be matched by regExp, else it will be matched by '===';

middle load rules:

  • the loading sequence is the middleware order; like the above example, when middlewares are [[m1, m2], [m3, m4]], the loading sequence are [[m1, m2], [m3, m4]].

Test

npm test

Support

If you have any problem or suggestion please open an issue here.

Dependencies (1)

Dev Dependencies (7)

Package Sidebar

Install

npm i smart-middleware

Weekly Downloads

1

Version

1.0.1

License

MIT

Last publish

Collaborators

  • amenema