@aofl/rotations v3.14.1
@aofl/rotations
The rotations class provides weight based view logic for A B testing. It takes a rotation configuration file alongside an initial route configuration file containing all possible routes and produces a finalized route configuration file containing only the selected routes based on the rotation configuration rules. It also caches the results per client.
Aofl Router works well in conjunction with Aofl Rotations. Other routers may be used as well if they take a configuration file that uses path as a key for the value of the route. See sample route config below.
Examples
Installation
$ npm i -S @aofl/rotationsUsage
Rotations config example
{
'baseline_version': '1000',
'conditions': {
'2': 'homepage_design'
},
'qualification_order': {
'/': ['2']
},
'versions': {
'1000': 'routes',
'1001': 'routes-homepage_design_test',
},
'weights': {
'2': {
'1000': 1,
'1001': 1
}
}
}Sample Route config example
{
'routes': [
{
'resolve': () => import('./routes/home/index.js'),
'rotation': 'routes',
'path': '/',
'dynamic': false,
'title': 'AofL::Home'
}
],
'routes-homepage_design_test': [
{
'resolve': () => import('./routes-homepage_design_test/home/index.js'),
'rotation': 'routes-homepage_design_test',
'path': '/',
'dynamic': false,
'title': 'AofL::Home',
'locale': ''
}
]
};Sample Rotation conditions
let rotationConditions = {
'baseline': () => {
return true;
},
'routes-homepage_design_test': (resolve, reject) => {
return Promise.resolve(true); // works with promises too as long as the promise resolves with a boolean
}
};Sample Directory structure
routes
├── home
│ ├── index.js
│ ├── styles.css
│ ├── template.js
│ └── test
│ └── index.spec.js
routes-homepage_design_test
├── home
│ ├── index.js
│ ├── styles.css
│ ├── template.js
│ └── test
│ └── index.spec.jsThe qualification logic begins by iterating over baseline routes (routes folder) and evaluating the conditions based on qualifying_order. Next weight are evaluated based on the qualifying rotation and the appropriate version is used to generate the new routes array.
Methods
| Name | Agruments | Description | Returns |
|---|---|---|---|
| constructor | cacheNameSpace String, routeConfig Object, rotationConfig Object, rotationConditions Object | Rotations constructor | void |
| getRoutes | no arguments | Gets the route configuration | routeConfig Array<Object> |
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago