Support node-like module loaders. Closes gh-1103

This commit is contained in:
isaacs 2013-02-20 21:30:42 -05:00 committed by Rick Waldron
parent 0f977e6d03
commit a128355b25
2 changed files with 25 additions and 17 deletions

View File

@ -1,18 +1,26 @@
// Expose jQuery to the global object if ( typeof module === "object" && typeof module.exports === "object" ) {
window.jQuery = window.$ = jQuery; // Expose jQuery as module.exports in loaders that implement the Node
// module pattern (including browserify). Do not create the global, since
// the user will be storing it themselves locally, and globals are frowned
// upon in the Node module world.
module.exports = jQuery;
} else {
// Otherwise expose jQuery to the global object as usual
window.jQuery = window.$ = jQuery;
// Expose jQuery as an AMD module, but only for AMD loaders that // Expose jQuery as an AMD module, but only for AMD loaders that
// understand the issues with loading multiple versions of jQuery // understand the issues with loading multiple versions of jQuery
// in a page that all might call define(). The loader will indicate // in a page that all might call define(). The loader will indicate
// they have special allowances for multiple jQuery versions by // they have special allowances for multiple jQuery versions by
// specifying define.amd.jQuery = true. Register as a named module, // specifying define.amd.jQuery = true. Register as a named module,
// since jQuery can be concatenated with other files that may use define, // since jQuery can be concatenated with other files that may use define,
// but not use a proper concatenation script that understands anonymous // but not use a proper concatenation script that understands anonymous
// AMD modules. A named AMD is safest and most robust way to register. // AMD modules. A named AMD is safest and most robust way to register.
// Lowercase jquery is used because AMD module names are derived from // Lowercase jquery is used because AMD module names are derived from
// file names, and jQuery is normally delivered in a lowercase file name. // file names, and jQuery is normally delivered in a lowercase file name.
// Do this after creating the global so that if an AMD module wants to call // Do this after creating the global so that if an AMD module wants to call
// noConflict to hide this version of jQuery, it will work. // noConflict to hide this version of jQuery, it will work.
if ( typeof define === "function" && define.amd && define.amd.jQuery ) { if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
define( "jquery", [], function () { return jQuery; } ); define( "jquery", [], function () { return jQuery; } );
}
} }

View File

@ -1,2 +1,2 @@
})( window ); })( this );