route-node
A package to create a tree (trie) of named routes. It is similar to routington except that nodes are not added by splitting path by segment ("/"). Instead the tree is built with the supplied nodes, meaning each node is a valid route.
This module is being used for developing a router, API is subject to change without notice
Install
$ npm install route-node --save
Usage
Building your route tree:
var rootNode = require('route-node');
var usersNode = new RouteNode('users', '/users', [
new RouteNode('list', '/list'),
new RouteNode('view', '/view/:id')
]);
var ordersNode = new RouteNode('orders', '/orders', [
{name: 'pending', path: '/pending'},
{name: 'completed', path: '/completed'},
{name: 'view', path: '/view/:id'}
]);
var rootNode = new RouteNode('', '', [
ordersNode,
usersNode
]);
rootNode.add(new RouteNode('home', '/home'));
You can chain constructor with add
and addNode
functions, making the example above shorter:
var rootNode = new RouteNode()
.addNode('users', '/users'))
.addNode('users.view', '/view/:id')
.addNode('users.list', '/list')
.addNode('orders', '/orders')
.addNode('orders.pending', '/pending')
.addNode('orders.completed', '/completed')
.addNode('orders.view', '/view/:id')
And then build paths, or match your paths against your tree:
rootNode.getPath('users.view');
rootNode.buildPath('users.view', {id: 1});
rootNode.matchPath('/users/view/1');
Trailing slash can be optional:
rootNode.matchPath('/users/view/1');
rootNode.matchPath('/users/view/1/');
rootNode.matchPath('/users/view/1/', true);
Related packages
Based on