@nichoth/routes
v4.0.7
Published
Route matcher devised for shared rendering JavaScript applications
Downloads
218
Maintainers
Readme
routes
Route matcher devised for shared rendering JavaScript applications
install
npm install -S @nichoth/routes
ESM vs CJS
Featuring ESM or CJS versions via package.json
exports
field.
// esm
import Router from '@nichoth/routes'
// cjs
const Router = require('@nichoth/routes').default
example
Get a router instance
import Router from '@nichoth/routes'
var router = new Router()
Add some routes
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', () => {/* ... */})
Find a match
const match = router.match('/articles');
// => RouteMatch
The match object
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
License
MIT
fork
This is a fork of ruta3, just adding types.