The backbone.js annotated source describes the following piece of code
var Backbone;
if (typeof exports !== 'undefined') {
Backbone = exports;
} else {
Backbone = root.Backbone = {};
}
as “The top-level namespace. All public Backbone classes and modules will be attached to this. Exported for both CommonJS and the browser.”
What does “exported for the browser” mean in this context?
In CommonJS, your modules are sequestered and anything you want to share with the thing that requires you is shared through the “exports” variable. Node.js, for instance, uses this.
On the other hand, if you are just in the browser, then you don’t use the
exportsvariable and you add a new variable inrootwhich ultimately points to thewindowglobal var.In other words, if we are using something that supports CommonJS, export Backbone. If not, put it in the root context instead.