Routes
Associate request endpoints to callbacks
Routes create independence between your markup and JavaScript. It also allows us to easily integrate HTML5 History. Wee routing serves as the blueprint for your project's JavaScript.
addFilter
Add conditional route filter
Variable | Type | Default | Description | Required |
---|---|---|---|---|
a | object, string | - | Multiple filter object or filter key | ✔ |
b | function | - | Filter function | - |
Single
Wee.routes.addFilter('isInternal', function(seg) {
return ['admin', 'protected'].indexOf(seg) > -1;
});
Multiple
Wee.routes.addFilter({
isInternal: function(seg) {
return ['admin', 'protected'].indexOf(seg) > -1;
},
isExternal: function(seg) {
return ['admin', 'protected'].indexOf(seg) < 0;
}
});
Filters
Included route filters
Once
Evaluate the route only once.
Wee.routes.map({
'$any:once': 'common'
});
Fire
Moves the route to the top of the evaluation order.
Wee.routes.map({
'$any:fire': 'common'
});
Unload
Evaluates when navigating away from a route with Wee.history. A common use-case for this filter is to manage in-memory objects and unbind page-specific events when navigating away from a page to prevent memory leaks.
Wee.routes.map({
'$any:unload': 'common:unload'
});
Pop
Evaluates when a history entry is changed. This will be triggered by doing a browser action such as a click on the back or forward button, or by calling history.back() or history.forward().
Wee.routes.map({
'$any:pop': 'common:pop'
});
Eval
Move the segment pointer back one level.
Wee.routes.map({
'$customFilter:eval': {
'$any': 'common',
'products': 'products'
}
});
!
Negates route if prefixed by js !
.
Wee.routes.map({
'!about': 'common'
});
Map
Retrieve or add route endpoints to route storage
Variable | Type | Default | Description | Required |
---|---|---|---|---|
a | object | - | Mapping object | - |
init | boolean | false | Immediately evaluate routes | - |
Set
Arguments can be nested as deep as necessary. Pass true as the second argument to immediately evaluate the specified routes from the first argument.
Wee.routes.map({
'$any': 'common',
'script': {
'routes': function() {
// Current page
}
}
});
If using the wee:fn`` format to call an init method you can exclude
:init` as it is assumed if no function is provided.
Get
Retrieve all the routes currently in storage.
Wee.routes.map();
{
"$any": "common",
"script": {
"routes": function(){}
}
}
Advanced
Wee.routes.map({
'$root': function(val) {
console.log('root ' + val);
},
'$any': function() {
console.log('root any');
},
'category': {
'$root||$/^P[\\d]+$/': function(val) {
console.log(val + ' root');
},
'$any': function() {
console.log('category any');
},
'mens': function() {
console.log('mens!');
},
'$/^(?!P[\\d]+).*$/': {
'$root': function(cat) {
console.log(cat + ' listing');
},
'$num': function(id) {
console.log('product ID is ' + id);
}
}
}
});
Wee.ready(function() {
Wee.routes.run({
path: 'category/name/123'
});
});
Run
Process stored route options with optional config
Variable | Type | Default | Description | Required |
---|---|---|---|---|
options | object | - | Object parameters below | - |
Options Object
Variable | Type | Default | Description | Required |
---|---|---|---|---|
path | string | - | Relative path from root domain | - |
routes | object | - | Mapping object | - |
Without arguments, the currently bound path and routes will be evaluated.
Wee.routes.run();
Advanced
If an object is provided, only the passed routes will be evaluated.
Wee.routes.run({
routes: {
'$any': 'common:init',
'script': {
'routes': function() {
// Current page
}
}
},
path: '/script/routes'
});
Segments
Get all segments or single segment at index
Variable | Type | Default | Description | Required |
---|---|---|---|---|
index | integer | - | Zero-based segment index | - |
Get all
Retrieve segment array from the currently bound path.
Wee.routes.segments();
["script", "routes"]
Get single
Get single segment by defining zero-based index.
Wee.routes.segments(1);
"routes"
URI
Get currently bound URI values or set URI data with a specified string or value object
Variable | Type | Default | Description | Required |
---|---|---|---|---|
value | string, object | - | Object parameters below | - |
Value Object
Variable | Type | Default | Description | Required |
---|---|---|---|---|
hash | string | - | Hash value | - |
path | string | - | Relative path | - |
Query | object | - | Query string object | - |
Get
Based on “/docs/v3/script/routes?id=success=yes#uri” the following object would be returned.
Wee.routes.uri();
{
hash: "uri",
path: "/script/routes",
query: {
success: "yes"
}
}
Set String
The set method accepts either an absolute URL, a relative path, or just a #hash.
Wee.routes.uri('another/page');
Set Object
Only the properties you wish to update should be provided. They will be merged into the current values.
Wee.routes.uri({
hash: 'uri',
path: '/script/routes',
query: {
success: 'yes'
}
});
Setting the URI only updates the internal reference. It doesn’t navigate the page.