Asynchronous module definition

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Asynchronous module definition (AMD) ist eine JavaScriptProgrammierschnittstelle, mit deren Hilfe Module und ihre Abhängigkeiten asynchron geladen werden können. Es bildet dadurch zwei grundlegende Konzepte der Software-Entwicklung, Modularisierung und Vererbung (im Sinne der objektorientierten Programmierung), in der ansonsten funktional und monolithisch aufgebauten JavaScript-Umgebung ab.

Die Vorgehensweise basiert weitestgehend auf dem Inversion-of-Control-Entwurfsmuster (IoC Pattern). Das Modul entspricht dabei dem Begriff der Bean in IoC.[1] Dadurch wird es ermöglicht, dass auch Java Script modular aufgebaut werden kann. Das Resultat sind Module, die vergleichbar mit Java-Klassen sind, und auch genauso durch Vererbung erweitert werden können.[2] Jedes Modul muss dabei – analog zur Java-Klasse – in einer eigenen Datei gespeichert sein.

Vorteile der Modularisierung bestehen besonders im Browser-Umfeld, wo JavaScript besonders häufig genutzt wird. Es werden nur die benötigten Module geladen, nicht jedoch alles, wie es beim synchronen Laden der Fall wäre. Das erhöht einerseits die Performanz des Codes und erleichtert andererseits das Debuggen, insbesondere bei Cross-Domain-Zugriffsproblemen.[3] Weiterhin ermöglicht es eine bessere Wiederverwendbarkeit einzelner Codefragmente, ohne diese per Kopieren und Einfügen oder serverseitige Verkettung (server side concatenation) transportieren zu müssen. Daraus ergibt sich eine Verringerung der Nutzung globaler Variablen auf ein Minimum und reduziert so die durch Namespace Pollution entstehenden Probleme signifikant.

Durch die Vorgabe der Verteilung des Codes auf viele einzelne Dateien ergeben sich jedoch auch Nachteile. Jede Datei muss vom Browser in einem separaten HTTP-Aufruf geladen werden, was bei vielen kleinen Dateien sehr viel Protokoll-Overhead erzeugen kann. Dadurch kann insbesondere bei Verbindungen mit hoher Latenzzeit, also z. B. in WLANs eine Verzögerung bemerkbar werden.[4]

AMD ist unter anderem in den Frameworks Dojo Toolkit, MooTools und RequireJS enthalten.[5]

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. https://docs.jboss.org/author/display/GTNPORTAL34/GDG-Asynchronous+Module+Definition
  2. http://docs.weejot.com/developer/reference/amd.html
  3. https://github.com/amdjs/amdjs-api/wiki/AMD
  4. http://tomdale.net/2012/01/amd-is-not-the-answer/
  5. http://www.meetup.com/CodeChops/events/61091212/