Definicja modułu asynchronicznego
Definicja moduł asynchroniczny ( AMD ) jest JavaScript - interfejs programowania , który umożliwia moduły mogą być ładowane asynchronicznie i ich zależności. W ten sposób odwzorowuje dwie podstawowe koncepcje tworzenia oprogramowania, modularyzacji i ponownego wykorzystania w funkcjonalnym i monolitycznym środowisku JavaScript. Modularyzacja pozwala na podział aplikacji Javascript na poszczególne podkomponenty, które mogą być oddzielnie rozwijane i testowane (dziel i rządź ). Dzięki przejrzystemu interfejsowi moduły AMD mogą być ponownie wykorzystywane w innych projektach oprogramowania.
Procedura w dużej mierze opiera się na odwróceniu wzorca sterowanie - projekt (wzorzec IoC). Moduł odpowiada terminowi fasola w IoC. Umożliwia to modułowe budowanie JavaScript. W rezultacie powstają moduły, które są porównywalne do Javy - klasy są i mogą być tak samo rozszerzane przez dziedziczenie. Każdy moduł musi być zapisany we własnym pliku , analogicznie do klasy Java .
Zalety modularyzacji są szczególnie widoczne w środowisku przeglądarki , w którym JavaScript jest używany szczególnie często. Ładowane są tylko wymagane moduły, a nie wszystko, jak miałoby to miejsce w przypadku ładowania synchronicznego. Z jednej strony zwiększa to wydajność kodu, az drugiej strony ułatwia debugowanie , szczególnie w przypadku problemów z dostępem między domenami. Ponadto umożliwia lepszą możliwość ponownego wykorzystania poszczególnych fragmentów kodu bez konieczności ich przenoszenia przez kopiowanie i wklejanie lub konkatenację po stronie serwera . Skutkuje to ograniczeniem użycia zmiennych globalnych do minimum, a tym samym znacznie zmniejsza problemy spowodowane zanieczyszczeniem przestrzeni nazw.
Jednak specyfikacja dystrybucji kodu w wielu pojedynczych plikach ma również wady. Każdy plik musi przez przeglądarkę w oddzielnym HTTP inwokacji obciążenia, które w wielu małych plików znacznie protokołu - overhead może produkować. Może to prowadzić do zauważalnego opóźnienia , szczególnie w przypadku połączeń z dużym opóźnieniem . Jednak ten narzut związany z wywoływaniem różnych plików Javascript można skompensować za pomocą pakietowania po stronie serwera.
Istnieją różne struktury AMD do implementacji formatu AMD, takie jak B. RequireJS , dojo Loader lub curl.js .
zaangażowanie
Format AMD zapewnia specjalną definicję modułu lub definicję komponentu, która umożliwia deklarację i prawidłowe ładowanie zależności. Dlatego definicja modułu opiera się na konwencjach programowania. Konwencja ta uległa zmianie w wielu swobodnie dostępnych bibliotekach Javascript, takich jak B. Wymuszone jQuery lub Socket.IO .
define("Name des Moduls", ["Abhängigkeit1", "Abhängigkeit2"], factory);
Powyższy kod programu ilustruje definicję modułu w formacie AMD. Oprócz nazwy modułu i zależności definiowana jest metoda fabryczna, za pomocą której moduł jest generowany. Ta metoda fabryczna służy do tworzenia wystąpienia komponentu i eksportowania możliwych obiektów interfejsu. Jak widać, do korzystania z formatu AMD wymagana jest biblioteka Javascript, która oferuje metodę definiowania i tworzy instancje różnych komponentów, a także wstrzykuje zależności. W środowisku AMD jest to określane jako moduł ładujący AMD. Procedura w dużej mierze odpowiada wzorowi fabryki abstrakcyjnej i iniekcji zależności z kontenerem IoC. W ten sposób można utworzyć instancje dowolnych komponentów i zapewnić wymagane zależności w odpowiedniej kolejności. Poszczególne komponenty aplikacji JS można odsprzęgnąć od siebie.
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;
};
);