• Raw <script> loading, where dependencies are implicit, and exports are vomited onto the window object. (Strangely, this convention doesn’t have a name!)
  • CommonJS - where a module’s dependencies are synchronously, dynamically require()d, and its exports are placed on an exports object.
  • “ECMAScript modules” - where a module’s dependencies are statically imported before execution, and its exports are statically defined, top-level variables.
  • Asynchronous Module Definition (AMD) - where a module calls define(dependencies, callback) (Plus a degenerate alternative form that unsafely wraps a CommonJS module; the less said about it, the better).
  • Universal Module Definition (UMD) - TODO