Skip to content

Instantly share code, notes, and snippets.

@miguelmota
Last active February 12, 2024 00:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miguelmota/9152810 to your computer and use it in GitHub Desktop.
Save miguelmota/9152810 to your computer and use it in GitHub Desktop.
Reusable module for Node.js and browser
;(function(root) {
var fglobal = typeof global === 'object' && global;
if (fglobal.global === fglobal || fglobal.window === fglobal) {
root = fglobal;
}
if (typeof define === 'function' && typeof define.amd === 'object') {
define([], function() {
return mymodule;
});
} else if (typeof exports === 'object') {
if (typeof module === 'object' && module.exports === 'object') {
module.exports = mymodule;
} else {
exports.mymodule = mymodule;
}
} else {
root.mymodule = mymodule;
}
}(this));
<!-- Browser -->
<script src="mymodule.js"></script>
<script>
MyModule.foo // 'bar'
</script>
// Node.js
var MyModule = require('mymodule');
MyModule.foo // 'bar'
(function(global) {
var MyModule = (function() {
return {
foo: 'bar'
};
})();
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = MyModule;
}
exports.MyModule = MyModule;
} else if (typeof define === 'function' && define.amd) {
define([], function() {
return MyModule;
});
} else {
global.MyModule = MyModule;
}
})(window);
(function(exports){
exports.myModulet = function(){
return 'hello world';
};
})(typeof exports === 'undefined'? this['myModule']={}: exports);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment