An isomorphic JavaScript routing and HTML5 history library.
const Napoleon = require('napoleon');
const router = new Napoleon.Router();
router.mount({
name: 'userprofile',
method: 'GET',
url: '/user/{userId}',
handler: () => {
console.log('Routed to user profile');
}
});
router.route('GET', '/user/15'); // calls the handler above, logging "Routed to user profile" to console
Routes are stored in a tree structure for fast insertion and lookup.
mount({method = 'GET', url, handler, name})
- method: GET|POST|PUT|DELETE|etc - case insensitive, defaults to GET
- url: URL path to match, named variable parameters are identified by brackets:
/user/{userId}
- handler: function which is called when the path is matched
- parameters: key/value object with parameters pulled from the route and querystring
- data: an argument that is passed through to the handler by the
route
method
URLs can be parameterized by wrapping one of the path segments in {}
brackets. For example, when matching a route /user/{userId}
anything in the segment following /user/
will be extracted into a userId
value. Star characters can be used as a match-all: /users/{userId}/*
let router = new Napoleon.Router();
router.mount({
name: 'userprofile',
method: 'GET',
url: '/user/{userId}',
handler: parameters => {
const {userId} = parameters;
console.log(`user profile was called for user ${userId}`);
}
});
Call route
to trigger a route handler for a given path.
router.route('GET', url);
You can retrieve the route object used when a route was mounted by calling matchRoute
const route = router.matchRoute('GET', url);
npm install
install packagesnpm test
will build napoleon, build tests, and run testsnpm run build
will build napoleon