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()
})