JSPM

  • Created
  • Published
  • Downloads 2484
  • Score
    100M100P100Q116073F
  • License MIT

A simple router built for minimalism and speed

Package Exports

  • wayfarer

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (wayfarer) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

wayfarer

NPM version build status Test coverage Downloads

Modular trie based based router. Works best with Browserify.

Installation

$ npm install wayfarer

Usage

const wayfarer = require('wayfarer')

const router = wayfarer({ default: '/404' })

router.on('/', () => console.log('/'))
router.on('/404', () => console.log('/404'))
router.on('/:user', () => console.log('/user'))

router.match('/tobi')
// => '/user'

API

wayfarer(opts)

Initialize wayfarer with options. default allows setting a default path to match if none other match. Ignores query strings.

const router = wayfarer({ default: '/404' })

.on(path, cb)

Register a new path. Wayfarer uses a trie to match routes, so the order in which routes are registered does not matter.

router.on('/', () => console.log('do stuff'))
router.on('/:user', () => console.log('do user stuff'))

Partial paths are supported through the /: operator, and the callback provides a param object. With a route like /:user if you navigated to /somename, you'd get a param object like this: { user: 'somename' }.

router.on('/:user', (uri, param) => console.log('my name is ', param.user))

Nested routers are supported by passing in .match() as the callback to another router.

const main = wayfarer()
const sub  = wayfarer()

main.on('/foo', sub.match.bind(sub))
sub.on('/foo/bar'), (uri) => console.log(uri))

main.match('/foo/bar')
// '/foo/bar'

.match(path)

Match a path against the saved paths in the router. If a match is found the registered callback will be executed.

router.match('/tobi')
// => 'do user stuff'

See Also

License

MIT