A wrapper around Grapnel router that extends it's functionality by adding few more features to it. It depends on a fork of Grapnel with just a few minor fixes such as support for multiple instances of router and other useful stuff.
npm i -S grapnel-plus
//
// CLIENT
//
var Router = require('grapnel-plus/router-client')
var router = new Router({ pushState: true })
router.page('/url', 'component-name')
//
// SERVER
//
var Router = require('grapnel-plus/router-server')
var router = new Router()
router.page('/url', 'component-name')
express.use(router.middleware())
Registers a new page by a given path, component name to render and optional middlewares.
Arguments:
- path - path of a route
- page - name of the page which should point to a file (optional)
- routeName - a name of a route. If skipped will be generated automatically by the path parameter (optional)
- ...middlewares - Express-compatible middlewares (one or more) that will be executed one after another (optional)
router.page('/path', 'component-name', 'optional-route-name', ...optionalMiddlewares)
Register middlewares that will be triggered before your routes. This allows you to update/log req and res objects before passing them further down to your routes or stop requests from going any further.
router.use((req, res, next) => { ... })
router.use((req, res, next) => { ... }, (req, res, next) => { ... })
router.use(
(req, res, next) => { ... },
// passing array of middewares is also allowed
[ (req, res, next) => { ... }, (req, res, next) => { ... } ]
)
Wrap your routs into groups. This allows to attach middlewares to entire groups of routes rather than repeat them to a set of routes.
// Global routes
router.page('/path', 'component-name')
// Group of routes
router.group('/admin', function () {
// Middlewares
this.use(isUserAdmin())
this.use((req, res, next) => { ... }, (req, res, next) => { ... })
this.use(arrayOfMiddlewares)
// Routes within a group
this.page('/payments', 'payments-component', isSuperAdmin()) // for super admins only
})
- routes - an array of registered routes as well as groups
- getRoute(name) - get route by name
- getRouteBy(by, value) - get route by "path", "page", or "name"