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
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
- hash-match - easy
window.location.hash
matching - pathname-match - strip a url to only match the pathname