Neologistic Paraphasic Mumbling

    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.

    Install

    npm i smart-middleware

    DownloadsWeekly Downloads

    1

    Version

    1.0.1

    License

    MIT

    Last publish

    Collaborators

    • amenema