When I was writing the javascript library for userinfo.io, I wanted anyone to be able to use it easily.

Most of the developers simply include the scripts in their pages:

<script type="text/javascript" src="myscript.js"></script>

But when you are writing more important javascript projects, it is frequent to use a dependency mechanism such as requirejs, which is based on the AMD API.
Instead of assigning your module to a global variable, you can define an AMD module which will be imported in the project under the name the developer will choose.

Let’s say that my module Hello has 2 methods: print and hasPrint.

var Hello = function() {
  var done = false;
  return {
    print: function(name) {
      if (!name) {
        name = "World";
      }
      console.log("Hello "+name+"!");
      done = true;
    },
    hasPrint: function() {
      return done;
    }
  }
};

I would use it this way:

var h = new Hello();
console.log(h.hasPrint()); // false
h.print(); // Hello World!
console.log(h.hasPrint()); // true
h.print("Vincent"); // Hello Vincent!

To make it available as an AMD module, we just have to encapsulate the code in a define function:

(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    define(factory);   // If we use a dependency mechanism, our method can be injected
  } else {
    root.Hello = factory();    // If we don't, let's fallback to a global variable
  }
}(this, function() {
  return function() {
    var done = false;
    return {
      print: function(name) {
        if (!name) {
          name = "World";
        }
        console.log("Hello "+name+"!");
        done = true;
      },
      hasPrint: function() {
        return done;
      }
    }
  }
}));

The usage is still really simple and the developper can choose to rename your module (here, I renamed Hello to Hi):

requirejs.config({
  "paths": {
    "Hi": "./hello-amd"
  }
});
require(['Hi'], function(Hi) {
  var h = new Hi();
  console.log(h.hasPrint()); // false
  h.print(); // Hello World!
  console.log(h.hasPrint()); // true
  h.print("Vincent"); // Hello Vincent!
});

By adding this tiny amount of code, you can now provide you library to those who use AMD which is priceless :)

You can find the full code of this example on this gist.

You can find more information on the dedicated page of the website of requirejs.