context-loader

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.

Usage

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.

//asynchronous 
loadScript('path/filename.js', function callback(errorcompiledScript){});
 
//synchronous 
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 
compiledScript.runInContext();
 
// node 
var initializedContext = compiledScript.runInContext(vm.createContext());
 
// browser 
var initializedContext = compiledScript.runInContext(document.body.appendChild(document.createElement("iframe")).contentWindow);

Return value is the context.