grapnel-plus

0.0.3 • Public • Published

grapnel-plus

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.

Installation

npm i -S grapnel-plus

Usage

//
// 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())

New method page for nicely registering pages (GET routes)

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)

New method use

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) => { ... } ]
)

Groups

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
})

Other properties/methods

  • 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"

Package Sidebar

Install

npm i grapnel-plus

Weekly Downloads

1

Version

0.0.3

License

ISC

Last publish

Collaborators

  • ilearnio