Skip to content

Instantly share code, notes, and snippets.

@drewlesueur
Forked from creationix/module.js
Created July 29, 2011 05:11
Show Gist options
  • Save drewlesueur/1113172 to your computer and use it in GitHub Desktop.
Save drewlesueur/1113172 to your computer and use it in GitHub Desktop.
A super simple module system for browsers. Assumes all source files are concatenated and in browser.
var defs = {};
var modules = {};
function define(name, fn) {
defs[name] = fn;
}
function require(name) {
//console.log("Loading " + name);
if (modules.hasOwnProperty(name)) return modules[name];
if (defs.hasOwnProperty(name)) {
var fn = defs[name];
defs[name] = function () { throw new Error("Circular Dependency"); }
return modules[name] = fn();
}
throw new Error("Module not found: " + name);
}
define('foo', function () {
return 42;
});
define('mymod', function () {
return {
stuff: "goes here",
"and here": require('foo')
};
});
var MyMod = require('mymod');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment