Asynchronous module definition
- Fewer page errors. AMD implementations allow developers to define dependencies that must load before a module is executed, so the module does not try to use outside code that is not available yet.
AMD provides some CommonJS interoperability. It allows for using a similar
require() interface in the code, although its own
define() interface is more basal and preferred. Universal module definiton (UMD) is a variant paradigm that takes advantage of these commonalities to support both AMD and CommonJS.