Our website is made possible by displaying online advertisements to our visitors.
Please consider supporting us by disabling your ad blocker.

Responsive image


Asynchronous module definition

Asynchronous module definition (AMD) ist eine JavaScript-Programmierschnittstelle, mit deren Hilfe Module und ihre Abhängigkeiten asynchron geladen werden können. Es bildet dadurch zwei grundlegende Konzepte der Software-Entwicklung, Modularisierung und Wiederverwendung, in der ansonsten funktional und monolithisch aufgebauten JavaScript-Umgebung ab. Die Modularisierung erlaubt die Aufteilung einer Javascript-Anwendung in einzelne Teilkomponenten, welche separat entwickelt und getestet werden können (Teile-und-herrsche-Verfahren). Aufgrund von klaren Schnittstellen können AMD-Module in anderen Softwareprojekten wiederverwendet werden.

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 JavaScript 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 eine Verzögerung bemerkbar werden.[4] Dieser Overhead beim Abruf von verschiedenen Javascript-Dateien kann allerdings durch die Verwendung eines serverseitigen Bundlings kompensiert werden.[5]

Zur Umsetzung des AMD-Formats existieren verschiedene AMD-Frameworks wie zum Beispiel RequireJS, The Dojo Loader oder curl.js.

  1. Archivierte Kopie (Memento des Originals vom 4. März 2016 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/docs.jboss.org
  2. Archivierte Kopie (Memento des Originals vom 18. Juli 2013 im Internet Archive)  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/docs.weejot.com
  3. https://github.com/amdjs/amdjs-apiview.php?sq=PHP&lang=de&q=AMD
  4. https://tomdale.net/2012/01/amd-is-not-the-answer/
  5. https://requirejs.org/docs/api.html

Previous Page Next Page






Asynchronous module definition English Asynchronous module definition Spanish Асинхронное определение модуля Russian

Responsive image

Responsive image