If you follow James' instructions here, you can easily produce a library designed as a bundle of RequireJS modules that someone can load synchronously.
I've got a github repository illustrating the whole thing. The salient points:
The
main
module exportsFoo
to the global space:define('main', ["./modC"], function () { console.log("inside"); window.Foo = {someValue: 1}; return {someValue: 2}; });
It also returns a value that is exported by the start fragment as
Bar
(that's the line that saysroot.Bar = factory();
). So it illustrates two ways to export to the global space.The wrapper code used by
r.js
starts main with the synchronous form ofrequire
:require(`main`);
If you load it, you'll see the following output:
outside
loaded modC
inside
out in the HTML!
value of window.Foo: Object {someValue: 1}
value of window.Bar: Object {someValue: 2}