This is a very basic example use of Express Shared Routes, and its intended to show how to bootstrap the library and explain the core elements.
The example creates a handler that responds to the following route /hello/:name. Once accessed, it will greet the person
by :name, and show you a link to greet somebody else.
To see more examples go here
Installing is quite simple, just run the following in your project's root folder.
npm install express-shared-routes --save
Before reading the explanation, we recommend to take a look at the code (it's only 19 lines of code).
Ok, so lets go down to business. First we need to require the libraries and instantiate express.
var express = require('express');
var app = express();
var RouteManager = require('express-shared-routes').RouteManager;Then we instantiate the RouteManager. This object will contain all the routes we define.
var routes = new RouteManager();The routes are defined very similar like express does. Instead of calling app.VERB(path,callback), we call routes.VERB(route,callback). Where VERB can be get, post or put.
routes.get({name: "named-hello", re: '/hello/:name'}, function(req, res){
...
});The route is an object literal that must contain at least a name and a express regular expression re.
Inside the route, we are going to greet the current person and create a link to greet Handsome
routes.get({name: "named-hello", re: '/hello/:name'}, function(req, res){
// Soft coded link
var href = routes.getLink ('named-hello', {name: 'Handsome'});
var response = "Hello " + req.param('name');
response += " <a href='"+ href + "'>Link</a>";
res.send(response);
});In the first line of the handler we create a href to greet Handsome, in this case /hello/Handsome. To do so, we ask the RouteManager to
get us the link for the route named named-hello and we pass an object with the property name. That property is needed because
the route is defined with the placeholder :name.
If we ended the example here, our route wouldn't be added. Thats because the library tries to be unobtrusive. So far all we have done is to mark our intention to add the routes, to actually add them into express we need to call this
routes.applyRoutes(app);Which will call app.VERB for all routes defined, just like you would.
The RouteManager saves the Routes in two data structures:
- A map which key is the name of the route
- A list that preserves the order of inclusion
The map is for fast access of the routes when calling stuff like routes.getLink. The map is also used to export the routes to the client side (see the second example).
The list is stored only for the routes.applyRoutes, so we can insert the routes in the same order they where defined.