Definição de módulo assíncrono
Definição módulo assíncrona ( AMD ) é uma JavaScript - interface de programação que permite que os módulos podem ser carregados de forma assíncrona e suas dependências. Assim, ele mapeia dois conceitos básicos de desenvolvimento de software, modularização e reutilização, no ambiente JavaScript monolítico e funcional . A modularização permite a divisão de uma aplicação Javascript em subcomponentes individuais, que podem ser desenvolvidos e testados separadamente (dividir e conquistar ). Graças às interfaces claras, os módulos AMD podem ser reutilizados em outros projetos de software.
O procedimento é amplamente baseado na inversão de controle - padrão de projeto (padrão IoC). O módulo corresponde ao termo bean em IoC. Isso permite que o JavaScript seja construído de maneira modular. O resultado são módulos comparáveis a Java - as classes são e podem ser estendidas por herança. Cada módulo deve ser salvo em seu próprio arquivo - análogo à classe Java .
As vantagens da modularização são particularmente evidentes no ambiente do navegador , onde o JavaScript é usado com frequência. Apenas os módulos necessários são carregados, não tudo, como seria o caso com o carregamento síncrono. Por um lado, isso aumenta o desempenho do código e, por outro lado, torna a depuração mais fácil , especialmente no caso de problemas de acesso entre domínios. Além disso, permite uma melhor reutilização de fragmentos de código individuais sem ter que transportá-los copiando e colando ou concatenação do lado do servidor . Isso resulta em uma redução no uso de variáveis globais ao mínimo e, portanto, reduz significativamente os problemas causados pela poluição do namespace.
No entanto, a especificação da distribuição do código em muitos arquivos individuais também tem desvantagens. Cada deve apresentar pelo navegador em um separado HTTP invocação de carga, que em muitos pequenos arquivos muito de protocolo - a sobrecarga pode produzir. Isso pode levar a um atraso perceptível , especialmente para conexões com alta latência . No entanto, essa sobrecarga ao chamar vários arquivos Javascript pode ser compensada usando um agrupamento do lado do servidor.
Existem várias estruturas AMD para implementar o formato AMD, como B. RequireJS , O Dojo carregador ou curl.js .
comprometimento
O formato AMD fornece uma definição de módulo especial ou definição de componente que permite a declaração e o carregamento correto de dependências. A definição do módulo é, portanto, baseada em convenções de programação. Esta convenção mudou em muitas bibliotecas Javascript disponíveis gratuitamente, como B. jQuery ou Socket.IO reforçado.
define("Name des Moduls", ["Abhängigkeit1", "Abhängigkeit2"], factory);
O código do programa acima ilustra a definição do módulo no formato AMD. Além do nome do módulo e das dependências, um método de fábrica é definido por meio do qual o módulo é gerado. Este método de fábrica é usado para instanciar o componente e exportar possíveis objetos de interface. Como pode ser visto, uma biblioteca Javascript é necessária para o uso do formato AMD, que oferece o método define e instancia os diversos componentes, além de injetar as dependências. No ambiente AMD, isso é conhecido como carregador AMD. O procedimento corresponde amplamente ao padrão da fábrica abstrata e injeção de dependência com um contêiner IoC. Dessa forma, qualquer componente pode ser instanciado e as dependências necessárias podem ser fornecidas na ordem apropriada. Os componentes individuais de um aplicativo JS podem ser separados uns dos outros.
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;
};
);
Links da web
- Wiki da API AMD
- Por que AMD? (Require.js)
- Escrevendo JavaScript modular com AMD, CommonJS e ES Harmony