JSFiddle - React, Tailwind, and code Playground

by Felipe Alfaro

JavaScript

console.clear();

var $a = (function(doc) {

    var modules = {};

    function $a() {
    }

    $a.addModule = addModuleFn;

    function addModuleFn(moduleName, moduleRequirements, moduleFn) {
        modules[moduleName] = new AlphaModule(moduleName, moduleRequirements, moduleFn);
    }
    
    function AlphaModule(moduleName, moduleRequirements, moduleFn) {
    	var module = this;
    
    	module.name = moduleName;
      module.requirements = moduleRequirements;
      
      moduleRequirements.forEach(function (requirement) {
      	Object.assign(module, modules[requirement]);
      });
      
      moduleFn.call(this);
    }

    return $a;

})(document);

$a.addModule('core', [], function () {

	var myMessage = 'Hello baby!';

	this.show = function () {
  	alert(myMessage);
  };
  this.info = {data: 1};

});

$a.addModule('myModule', ['core'], function () {

	console.log(this.info);
  this.info.data = 23456;
	console.log('myModule', this.info);
});

$a.addModule('myModules', ['core'], function () {

	console.log('myModules', this.info);
});



console.dir($a);