Skip to content

Instantly share code, notes, and snippets.

Created November 8, 2014 04:44
Show Gist options
  • Save anonymous/4837583657fb4e4f7d94 to your computer and use it in GitHub Desktop.
Save anonymous/4837583657fb4e4f7d94 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
//See https://github.com/togakangaroo/simple-modules
window.require = function(name) {
window.require._definedModules || (window.require._definedModules = {});
if(!window.require._definedModules[name])
throw Error("No such module " + name)
var currentRequires = window.require._currentRequires || (window.require._currentRequires = []);
if(~currentRequires.indexOf(name))
throw Error("Circular dependency detected when requiring "+ name + ". The following modules were already required: " + currentRequires.join(', '));
currentRequires.push(name);
var res = window.require._definedModules[name].instance ||
(window.require._definedModules[name].instance = window.require._definedModules[name].definition());
if(currentRequires.pop() != name)
throw Error("Something went wrong in dependency resolution when returning module "+name+ ". We're not sure how this happened.")
return res;
}
window.define = function(name, definition) {
window.require._definedModules || (window.require._definedModules = {});
window.require._definedModules[name] = {
instance: null,
definition: definition
};
}
////////////////////////////////////////////
//Usage
////////////////////////////////////////////
//First define your modules
define('A', function() {
console.log("Module A loaded");
return function() { console.log("Module A return value invoked") }
});
define('B', function() {
console.log("Module B loaded");
return function() { console.log("Module B return value invoked") }
});
define('C', function(){
var a = require('A');
var b = require('B');
console.log("Module C loaded");
return function(){
console.log("Module C return value invoked");
a();
b();
}
})
define('D', function() {
var a = require('A');
var c = require('C');
console.log("Module D loaded");
return function(){
console.log("Module D return value invoked");
a();
c();
}
});
// Then require your top level one
var d = require('D');
d();
// Will detect circular references
define('Loop1', function(){
require('Loop2');
console.log("Loop1 loaded");
})
define('Loop2', function(){
require('C');
require('Loop3');
console.log("Loop2 loaded");
})
define('Loop3', function(){
require('Loop1');
console.log("Loop3 loaded");
})
require('Loop1')
</script>
<script id="jsbin-source-javascript" type="text/javascript">//See https://github.com/togakangaroo/simple-modules
window.require = function(name) {
window.require._definedModules || (window.require._definedModules = {});
if(!window.require._definedModules[name])
throw Error("No such module " + name)
var currentRequires = window.require._currentRequires || (window.require._currentRequires = []);
if(~currentRequires.indexOf(name))
throw Error("Circular dependency detected when requiring "+ name + ". The following modules were already required: " + currentRequires.join(', '));
currentRequires.push(name);
var res = window.require._definedModules[name].instance ||
(window.require._definedModules[name].instance = window.require._definedModules[name].definition());
if(currentRequires.pop() != name)
throw Error("Something went wrong in dependency resolution when returning module "+name+ ". We're not sure how this happened.")
return res;
}
window.define = function(name, definition) {
window.require._definedModules || (window.require._definedModules = {});
window.require._definedModules[name] = {
instance: null,
definition: definition
};
}
////////////////////////////////////////////
//Usage
////////////////////////////////////////////
//First define your modules
define('A', function() {
console.log("Module A loaded");
return function() { console.log("Module A return value invoked") }
});
define('B', function() {
console.log("Module B loaded");
return function() { console.log("Module B return value invoked") }
});
define('C', function(){
var a = require('A');
var b = require('B');
console.log("Module C loaded");
return function(){
console.log("Module C return value invoked");
a();
b();
}
})
define('D', function() {
var a = require('A');
var c = require('C');
console.log("Module D loaded");
return function(){
console.log("Module D return value invoked");
a();
c();
}
});
// Then require your top level one
var d = require('D');
d();
// Will detect circular references
define('Loop1', function(){
require('Loop2');
console.log("Loop1 loaded");
})
define('Loop2', function(){
require('C');
require('Loop3');
console.log("Loop2 loaded");
})
define('Loop3', function(){
require('Loop1');
console.log("Loop3 loaded");
})
require('Loop1')</script></body>
</html>
//See https://github.com/togakangaroo/simple-modules
window.require = function(name) {
window.require._definedModules || (window.require._definedModules = {});
if(!window.require._definedModules[name])
throw Error("No such module " + name)
var currentRequires = window.require._currentRequires || (window.require._currentRequires = []);
if(~currentRequires.indexOf(name))
throw Error("Circular dependency detected when requiring "+ name + ". The following modules were already required: " + currentRequires.join(', '));
currentRequires.push(name);
var res = window.require._definedModules[name].instance ||
(window.require._definedModules[name].instance = window.require._definedModules[name].definition());
if(currentRequires.pop() != name)
throw Error("Something went wrong in dependency resolution when returning module "+name+ ". We're not sure how this happened.")
return res;
}
window.define = function(name, definition) {
window.require._definedModules || (window.require._definedModules = {});
window.require._definedModules[name] = {
instance: null,
definition: definition
};
}
////////////////////////////////////////////
//Usage
////////////////////////////////////////////
//First define your modules
define('A', function() {
console.log("Module A loaded");
return function() { console.log("Module A return value invoked") }
});
define('B', function() {
console.log("Module B loaded");
return function() { console.log("Module B return value invoked") }
});
define('C', function(){
var a = require('A');
var b = require('B');
console.log("Module C loaded");
return function(){
console.log("Module C return value invoked");
a();
b();
}
})
define('D', function() {
var a = require('A');
var c = require('C');
console.log("Module D loaded");
return function(){
console.log("Module D return value invoked");
a();
c();
}
});
// Then require your top level one
var d = require('D');
d();
// Will detect circular references
define('Loop1', function(){
require('Loop2');
console.log("Loop1 loaded");
})
define('Loop2', function(){
require('C');
require('Loop3');
console.log("Loop2 loaded");
})
define('Loop3', function(){
require('Loop1');
console.log("Loop3 loaded");
})
require('Loop1')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment