www.wikidata.de-de.nina.az
Asynchronous module definition AMD ist eine JavaScript Programmierschnittstelle mit deren Hilfe Module und ihre Abhangigkeiten asynchron geladen werden konnen 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 konnen Teile und herrsche Verfahren Aufgrund von klaren Schnittstellen konnen 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 ermoglicht dass auch JavaScript modular aufgebaut werden kann Das Resultat sind Module die vergleichbar mit Java Klassen sind und auch genauso durch Vererbung erweitert werden konnen 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 haufig genutzt wird Es werden nur die benotigten Module geladen nicht jedoch alles wie es beim synchronen Laden der Fall ware Das erhoht einerseits die Performanz des Codes und erleichtert andererseits das Debuggen insbesondere bei Cross Domain Zugriffsproblemen 3 Weiterhin ermoglicht es eine bessere Wiederverwendbarkeit einzelner Codefragmente ohne diese per Kopieren und Einfugen oder serverseitige Verkettung server side concatenation transportieren zu mussen 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 Verzogerung 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 Einsatz BearbeitenDas AMD Format sieht eine spezielle Moduldefinition bzw Komponentendefinition vor welche die Deklaration und das korrekte Laden von Abhangigkeiten ermoglicht Die Moduldefinition erfolgt somit auf der Basis von Programmierkonventionen Diese Konvention hat sich bei vielen frei verfugbaren Javascript Bibliotheken wie zum Beispiel jQuery oder Socket IO durchgesetzt define Name des Moduls Abhangigkeit1 Abhangigkeit2 factory Der oben stehende Programmcode veranschaulicht die Moduldefinition im AMD Format Neben dem Namen des Moduls und den Abhangigkeiten wird eine Factory Methode definiert uber die das Modul erzeugt wird Diese Factory Methode dient dazu die Komponente zu instanziieren und mogliche Schnittstellen Objekte zu exportieren Wie erkenntlich wird ist fur den Einsatz des AMD Formats eine Javascript Bibliothek erforderlich welche die define Methode anbietet und die verschiedenen Komponenten instanziiert sowie die Abhangigkeiten injizieren Im AMD Umfeld wird hierbei von einem AMD Loader gesprochen Die Vorgehensweise entspricht weitestgehend dem Muster der abstrakten Fabrik und der Dependency Injection mit einem IoC Container Auf diese Weise konnen beliebige Komponenten instanziiert und die benotigten Abhangigkeiten konnen in der entsprechenden Reihenfolge bereitgestellt werden Die einzelnen Komponenten einer JS Anwendung konnen voneinander entkoppelt werden define PieChartModule area graph function area graph Beschreibung des Plot Modules var plotModuleExport plot function width height data Einfache Nutzung der Module graph und area return graph drawPie area randomGrid width height data return plotModuleExport Weblinks BearbeitenAMD API wiki Why AMD Require js Writing Modular JavaScript With AMD CommonJS amp ES HarmonyEinzelnachweise Bearbeiten Archivierte Kopie Memento des Originals vom 4 Marz 2016 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot docs jboss org Archivierte Kopie Memento des Originals vom 18 Juli 2013 im Internet Archive nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot docs weejot com https github com amdjs amdjs api wiki AMD https tomdale net 2012 01 amd is not the answer https requirejs org docs api html Abgerufen von https de wikipedia org w index php title Asynchronous module definition amp oldid 239489556