Route matcher devised for shared rendering JavaScript applications
npm install -S @substrate-system/routesFeaturing ESM or CJS versions via package.json exports field.
// esm
import Router from '@substrate-system/routes'// cjs
const Router = require('@substrate-system/routes').defaultGet a router instance
import Router from '@substrate-system/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');
// => RouteMatchinterface 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 |
This is a fork of ruta3, just adding types.