Asynchronous module definition

AMD (Asynchronous module definition) is a way to handle loading, caching and dependency of encapsulated modules.