Load scripts and run them in a context. For both browsers and node, sync and async.

Context Loader

Load JavaScript, compile the script without running it, run it as many times as you want in as many contexts as you want. Do it in Node or in the browser, with either asynchronous or synchronous loading.


The main difference between usage in browsers and Node is in initially loading.

// Node
var loadScript = require('context-loader').loadScript;
// Browser
<script src="context-loader.js"></script>

Script loading can be done in two ways.

loadScript('path/filename.js', function callback(errorcompiledScript){});
var compiledScript = loadScript('path/filename.js');

If loaded synchronously any errors will be passed back as the result

Once you have the compiled script you can then run it in contexts. State isn't shared inside the script itself so it can be used multiple times in the same or different contexts. In Node, a context is either the global object or a Context object created using the vm module. In the browser a context is either the global object or some other window object like an iframe contentWindow.

// run using the current global context 
// node 
var initializedContext = compiledScript.runInContext(vm.createContext());
// browser 
var initializedContext = compiledScript.runInContext(document.body.appendChild(document.createElement("iframe")).contentWindow);

Return value is the context.