Definice asynchronního modulu
Definice asynchronní modul ( AMD ) je JavaScript - programovací rozhraní, které umožňuje moduly lze načíst asynchronně a jejich závislosti. Mapuje tak dva základní koncepty vývoje softwaru, modularizaci a opětovné použití, v jinak funkčním a monolitickém prostředí JavaScriptu. Modularizace umožňuje rozdělení aplikace Javascript na jednotlivé dílčí součásti, které lze samostatně vyvíjet a testovat (rozdělit a dobýt ). Díky jasným rozhraním lze moduly AMD znovu použít v jiných softwarových projektech.
Postup je z velké části založen na inverzi vzoru kontroly - návrhu (vzor IoC). Modul odpovídá výrazu bean v IoC. To umožňuje modulární vytváření JavaScriptu. Výsledkem jsou moduly, které jsou srovnatelné s Java - třídy jsou a lze je stejně rozšířit dědičností. Každý modul musí být uložen ve svém vlastním souboru - analogicky k třídě Java .
Výhody modularizace jsou patrné zejména v prostředí prohlížeče , kde se obzvláště často používá JavaScript. Načtou se pouze požadované moduly, ne všechno, jako by tomu bylo v případě synchronního načítání. Na jedné straně to zvyšuje výkonnost kódu a na druhé straně usnadňuje ladění , zejména v případě problémů s přístupem mezi doménami. Kromě toho umožňuje lepší opětovnou použitelnost jednotlivých fragmentů kódu, aniž byste je museli přepravovat kopírováním a vkládáním nebo zřetězením na straně serveru . To má za následek snížení použití globálních proměnných na minimum a tím významně snižuje problémy způsobené znečištěním oboru názvů.
Specifikace distribuce kódu do mnoha jednotlivých souborů má však také nevýhody. Každý soubor musí prohlížeč v samostatném vyvolání načítání HTTP , což v mnoha malých souborech může vyprodukovat mnoho protokolů - režie . To může vést ke znatelnému zpoždění , zejména u připojení s vysokou latencí . Tuto režii při vyvolání různých souborů Javascript však lze kompenzovat pomocí svazku na straně serveru.
K implementaci formátu AMD existují různé rámce AMD, například B. RequireJS , Dojo nakladač nebo curl.js .
závazek
Formát AMD poskytuje definici speciálního modulu nebo definici komponenty, která umožňuje deklaraci a správné načtení závislostí. Definice modulu je proto založena na programovacích konvencích. Tato konvence se změnila v mnoha volně dostupných knihovnách Javascript, jako je Vynuceno B. jQuery nebo Socket.IO .
define("Name des Moduls", ["Abhängigkeit1", "Abhängigkeit2"], factory);
Výše uvedený programový kód ilustruje definici modulu ve formátu AMD. Kromě názvu modulu a závislostí je definována tovární metoda, pomocí které je modul generován. Tato tovární metoda se používá k vytvoření instance instance a exportu možných objektů rozhraní. Jak je vidět, pro použití formátu AMD je vyžadována knihovna Javascript, která nabízí metodu definování a instanci různých komponent a také vkládání závislostí. V prostředí AMD se to označuje jako zavaděč AMD. Postup do značné míry odpovídá vzoru abstraktní továrny a vkládání závislostí s kontejnerem IoC. Tímto způsobem lze vytvořit instanci libovolných komponent a poskytnout požadované závislosti v příslušném pořadí. Jednotlivé komponenty aplikace JS lze od sebe oddělit.
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;
};
);