Index

limosa NPM version

Fast router for both browser and server

Build Status Coverage

See the auto-generated docs

How to use

import { RouterBuilder, RoutesTranslations } from 'limosa';


const routesLangsConfig = new Map([
    ['login', new Map([['en', 'login'], ['fr', 'connexion']])],
    ['post', new Map([['en', 'post'], ['fr', 'article']])],
    ['view', new Map([['en', 'view'], ['fr', 'afficher']])],
]);

const routesTranslations = new RoutesTranslations(routesLangsConfig);

const builder = new RouterBuilder(routesTranslations, ['en', 'fr']);
module.exports = builder.router;

builder
    .add('/', '/', 'site.index')
    .add('postView', '/post/${id}-${slug}', 'post.view', {
        namedParamsDefinition: { slug: '[A-Za-z\-]+' },
        extension: 'htm'
    })
    .addDefaultRoutes();

Build a router

  • Named parameter: ${name}
  • Optional route part: [] like '/post[/${tagKey}]/${id}-${slug}'
  • Special named parameters: controller, action, queryString, hash.

Url Generator

router.urlGenerator('en', 'postView', { id: '001', 'a-slug' });
// /post/001-a-slug