I'm still very confused about **CommonJS, AMD** and **RequireJS**, even after reading a lot.

I know that **CommonJS** (formerly **ServerJS**) is a group for defining some **JavaScript** specifications (i.e. modules) when the language is used outside the browser. **CommonJS** modules specification has some implementation like **Node.js** or **RingoJS**, right?

> 
> What's the relation between **CommonJS**, **Asynchronous Module Definition** (AMD) and **RequireJS**?
> 
> 
> Is **RequireJS** an implementation of the **CommonJS** module definition? If yes, what's **AMD** then?
> 
> 
>