Skip to content

Instantly share code, notes, and snippets.

@dshaw
Forked from creationix/module.js
Created June 22, 2011 05:01
Show Gist options
  • Save dshaw/1039535 to your computer and use it in GitHub Desktop.
Save dshaw/1039535 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.
function define(name, fn) {
if (!defs) { defs = {}; }
defs[name] = fn;
}
function require(name) {
console.log("Loading " + name);
if (modules && modules.hasOwnProperty(name)) return modules[name];
if (defs && defs.hasOwnProperty(name)) {
if (!modules) { modules = {}; }
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