Requirejs Map
A/B Testing
by vikikamath
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.2/require.min.js"></script>
JavaScript
requirejs.config({
map: {
'view/one': {
'control': 'template/control'
,'treatment': 'template/treatment'
}
}
});
define('template/control', function(){
return function(viewName) {
console.log('I am view:', viewName, 'control');
};
})
define('template/treatment', function(){
return function(viewName) {
console.log('I am view:', viewName, 'treatment');
};
})
define('decisionMaker', function(){
return function(){
var promise = new Promise(function(res, rej) {
setTimeout(function(){
res(Math.random() > 0.5 ? 'control': 'treatment');
}, 150)
})
return promise;
};
})
define('view/one', /*['require', 'decisionMaker'],*/ function(require/*, decisionMaker*/){
return function(){
// logic to make a decision type deferred
//decisionMaker().then(function(decision) {
require('control')('view/one');
//})
};
})
require(['view/one'], function(view) {
view()
})