README
router-segments
Router with segments
Why another router ?
This router take full advantages of segments, building a tree of regexp to avoid having 500 regexp calls for one route.
How to use
router-segments uses path-to-regexp for matching the route paths, also used by expressjs, koa-router and many other routers.
import { createRouterBuilder } from 'router-segments';
const builder = createRouterBuilder();
builder.add('/', ref);
builder.addSegment('/post', (segmentBuilder) => {
segmentBuilder.add('/:id(\\d+)-:slug([A-Za-z\\-]+)', ref, '/post/view');
segmentBuilder.defaultRoute(ref, '/post');
});
export default builder.createRouter();
Url Generator
router.toPath('/post/view', { id: '001', slug: 'a-slug' });
// /post/001-a-slug
Localized routes
import { createRouterBuilder } from 'router-segments';
const builder = createRouterBuilder(['en', 'fr']);
builder.add('/', ref);
builder.addLocalizedSegment(
{
en: '/my-blog',
fr: '/mon-blog',
},
(segmentBuilder) => {
segmentBuilder.addLocalized(
{
en: '/post/:id(\\d+)',
fr: '/billet/:id(\\d+)',
},
ref,
'/my-blog/post',
);
segmentBuilder.defaultRoute(ref, '/my-blog');
},
);
export const router = builder.createRouter();
API
see Definition file