express-router-class

express router class

Usage no npm install needed!

<script type="module">
  import expressRouterClass from 'https://cdn.skypack.dev/express-router-class';
</script>

README

express-router-class

simple router
support config routes
support decorator base on path-to-regexp

setting

All of settings have default value
default controller dir 'src/controller'
default route 'index/index'
// router.js
module.exports = {
    '/404': 'common/notfound',
    '/502': 'common/__error',
    '/test/:no(\\d+)': 'common/__error',
    '/hello/world': `/${className}/${methodName}`,
}

usage

const { Router } = require('express-router-class');
const config = {
    modules: ['home', 'admin'] // default false,
    controllerRoot: '***'   // default 'src', controllerDir src/controller
                            // if setting modules: ['home'], controllerDir will transform to ['src/home/controller']
    controllerSuffix: '',   // default 'Controller',
    regexpFile: path.resolve(process.cwd(), 'src/config/routes'),       // default null,
};
app.use(Router(config));
const { Path, Controller } = require('express-router-class');

// controller
// @Path('/rootpath') // default ''
export default class Index extends Controller {
    __before() {}
    __after() {}

    // route 'index/index'
    index() {
        // this.req
        // this.res
        // this.next
        // this.ctx
    }

    // route 'index/rest/1/2/3'
    rest(a, b, c) {
        console.log(a, b, c); // 1, 2, 3
        this.render('index/index');
    }

    // route 'index/test/a/b/c/d'
    test(...props) {
        console.log(props); // ['a', 'b', 'c', 'd']
    }

    // route '/123'
    @Path('/:ddd')
    decorator(ddd) {
        console.log(ddd); // '123'
    }
}