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"