npm install --save web-router
<script src="/path/to/web-router.js"></script>
To setup web-router all you need to do is to reqiure the module with browserify, define your routes and then run the Route.init()
.
var Route = require('web-router');
Route.set('/hello/:variable', function(variable){
console.log('hello', variable);
});
Route.group({
'path/to/something': function(){},
'path/to/something/else': function(){},
});
Route.init();
Is a powerful way to structure your routes, and gives you the ability to prefix groups of routes.
// function structure
// prefix (optional): prefix is added to the routes in the group
// middleware (optional):
// routes: is a object where the object key defines the route and the related function is the callback
Route.group(prefix, middleware, routes);
// example
Route.group('admin', Auth.admin, {
'users': UserController.list,
'user/:id': UserController.show,
'user/:id/delete': function(){
// delete user
}
});
If you need a variable in a route to be optional, you can do this by adding a ?
at the end
Route.set('user/:id?', UserController.index);
If you have a url with params example.com?key=value
. You can access those through the the Route.data
.
// example url: www.example.com?key=value
Route.data.key // returns value
Middlewares are used when you want some logic to run before the callback is triggered. If the middleware returns true the callback will run as it normally would. If it returns false the route callback will not be triggered.
// Middleware example
// If you want to check if a user is logged in before the route is available
Route.set('/admin', Auth.check, function(){
// triggers if Auth.check() returns true
});
web-router adds an event listener to all <a href="/hello/world"></a>
to avoid page refreshes and instead triggers the Route.change('/hello/world')
.
If you want to, you can rewrite the Route.notFound()
to what ever you want.
// defined function which is triggered when route isn't found
Route.notFound = function(){
// do something
};
npm test