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;
      };
);

webové odkazy

Individuální důkazy

  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://requirejs.org/docs/api.html