Route matcher devised for shared rendering JavaScript applications
npm install -S @bicycle-codes/routes
Featuring ESM or CJS versions via package.json
exports
field.
// esm
import Router from '@bicycle-codes/routes'
// cjs
const Router = require('@bicycle-codes/routes').default
Get a router instance
import Router from '@bicycle-codes/routes'
var router = new Router()
router.addRoute('/articles', getArticles);
router.addRoute('/articles/:slug', getArticleBySlug);
router.addRoute('/articles/search/*', searchForArticles);
// can also chain the method calls
router
.addRoute('/foo', () => {/* ... */})
.addRoute('/bar', () => {/* ... */})
const match = router.match('/articles');
// => RouteMatch
interface RouteMatch {
params:Record<string, string>; // <-- e.g. { slug: 'article-title' }
splats:string[];
route:string;
next?:((...any)=>any)|null;
action?:(...any)=>any;
index?:number;
}
You'll get null
back if no route matches the provided URL. Otherwise, the
route match will provide all the useful information you need inside an object.
Key | Description |
---|---|
action |
The action passed to addRoute as a second argument. Using a function is recommended |
next |
Fall through to the next route, or null if no other routes match |
route |
The route passed to addRoute as the first argument |
params |
An object containing the values for named parameters in the route |
splats |
An object filled with the values for wildcard parameters |
MIT
This is a fork of ruta3, just adding types.