wayfarer
Composable trie based router.
It is faster than traditional, linear, regular expression-matching routers,
although insignficantly, and scales with the number of routes.
Installation
$ npm install wayfarer
Usage
const wayfarer = require('wayfarer')
const router = wayfarer('/404')
router.on('/', () => console.log('/'))
router.on('/404', () => console.log('404 not found'))
router.on('/:user', params => console.log('user is %s', params.user))
router('/tobi')
router('/uh/oh')
Subrouting
Routers can be infinitely nested, allowing routing to be scoped per view.
Matched params are passed into subrouters.
const r1 = wayfarer()
const r2 = wayfarer()
r1.on('/:parent', r2)
r2.on('/child', () => console.log('subrouter trix!'))
r1('/dada/child')
API
router = wayfarer(default)
Initialize a router with a default route. Doesn't ignore querystrings and hashes.
router.on(route, cb(params))
Register a new route. The order in which routes are registered does not matter.
Multiple callbacks can be registered. See
routington.define()
for all route options.
router(route)
Match a route and execute the corresponding callback. Alias: router.emit()
.
Why?
Routers like react-router are
complicated solutions for a simple problem. All I want is a
methodless router
that's as simple as EventEmitter
and allows composition by mounting
subrouters as handlers.
See Also
License
MIT