havana-router
v0.1.4
Published
A simple router for routed response handlers
Downloads
5
Maintainers
Readme
Havana router
A simple router for routed response handlers.
Havana router subscribes to the route.find
event published
by a routed response handler. When it receives a route.find
event it will iterate through the array of routes it was
instantiated with, attempting to match on the url
and
method
. If it matches a route Havana router will publish a
route.found
event for the routed response handler to
consume. If it fails to match a route Havana router will
publish a route.error
event.
How to install
npm install havana-router
How to use
import Event from 'havana-event';
import Router from 'havana-router';
import Server from 'havana-server';
const event = new Event();
const reporting = {
'level': 2,
'reporter': console.log,
};
const server = new Server({
'event': event,
'reporting': reporting,
});
new Router({
'event': event,
'reporting': reporting,
'routes': [
{
'url': '/',
'method': 'GET',
'content': 'Home page',
},
{
'url': '/about',
'method': 'GET',
'content': 'About page',
},
],
});
// Add a routed response handler here
server.listen( 3000 );
Event list
Events take the form of Havana event or a library with an interchangeable API.
Publish
route.found
: Signifies that Havana router has matched a route, publishing the route data for consumption by a routed response handler.route.error
: Signifies that Havana router was unable to match a route.
Subscribe
route.find
: Allows a routed response handler to notify Havana router that it wishes to receive route data that matches the publishedurl
andmethod
.
ES2015+
Havana router is written using ES2015+ syntax.
However, by default this module will use an ES5 compatible file that has been compiled using Babel.
In the dist
directory there are four files, the default
is router.server.js
. The default when using a client-side
bundler that supports the
browser field
spec is router.browser.js
.
Havana router currently requires the
Babel polyfill.
You are expected to supply this yourself. However, as a
courtesy you will also find router.server.with-polyfill.js
and router.browser.with-polyfill.js
in the dist
directory.