Smol frontend router
var nanorouter = require('nanorouter')
var router = nanorouter({ default: '/404' })
router.on('/foo', function (params) {
console.log('hit /foo')
})
router.on('/foo/:bar', function (params) {
console.log('hit a route with params', params.bar)
})
router.on('/foo#baz', function (params) {
console.log('we do hash routes too!')
})
router.on('/foo/*', function (params) {
console.log('and even wildcards', params.wildcard)
})
router.emit('/foo/hello-planet')
sheet-router
does slightly more and has a different syntax. This router is
lighter, faster and covers less concerns. They're pretty similar under the hood
though.
router = nanorouter([opts])
Create a new router. opts
can be:
/404
router.on(routename, handler(params))
Register a handler on a routename. The handler receives an object with params
on each render. A result can be return
ed the caller function.
result = router.emit(routename)
Call a handler for a routename
. If no handler matches, the handler specified
in opts.default
will be called. If no default handler matches, an error will
be thrown. Results returned from the called handler will be returned from this
function.
matchedRoute = router.match(route)
Matches a route and returns an object. The returned object contains the properties {cb, params, route}
. This method does not invoke the callback of a route. If no route matches, the route specified in opts.default
will be returned. If no default route matches, an error will be thrown.
Note that router()
does not affect browser history. If you would like to
add or modify history entries when you change routes, you should use
history.pushState()
and history.replaceState()
alongside router()
.