wayfarer

Composable trie based router

wayfarer

Composable trie based router. It is faster than traditional, linear, regular expression-matching routers, although insignficantly, and scales with the number of routes.

$ npm install wayfarer
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')
// => 'user is tobi' 
 
router('/uh/oh')
// => '404 not found' 

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')
// => 'subrouter trix!' 

Initialize a router with a default route. Doesn't ignore querystrings and hashes.

Register a new route. The order in which routes are registered does not matter. Routes can register multiple callbacks. See routington.define() for all route options.

Match a route and execute the corresponding callback. Alias: router.emit().

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.

MIT