Definición de módulo asincrónico
Definición de módulo asíncrono ( AMD ) es un JavaScript - interfaz de programación que permite a los módulos se pueden cargar de forma asíncrona y sus dependencias. Por lo tanto, mapea dos conceptos fundamentales de desarrollo de software, modularización y reutilización, en el entorno de JavaScript , por lo demás funcional y monolítico . La modularización permite la división de una aplicación Javascript en subcomponentes individuales, que se pueden desarrollar y probar por separado (divide y vencerás ). Debido a las interfaces claras, los módulos AMD se pueden reutilizar en otros proyectos de software.
El procedimiento se basa en gran medida en la inversión de control - patrón de diseño (patrón de IoC). El módulo corresponde al término bean en IoC. Esto permite crear JavaScript de forma modular. El resultado son módulos que son comparables a Java : las clases lo son y pueden ser igualmente extendidas por herencia. Cada módulo debe guardarse en su propio archivo , análogo a la clase Java .
Las ventajas de la modularización son particularmente evidentes en el entorno del navegador , donde JavaScript se utiliza con especial frecuencia. Solo se cargan los módulos necesarios, no todo, como sería el caso de la carga síncrona. Por un lado, esto aumenta el rendimiento del código y, por otro lado, facilita la depuración , especialmente con problemas de acceso entre dominios. Además, permite una mejor reutilización de fragmentos de código individuales sin tener que transportarlos copiando y pegando o concatenando en el lado del servidor . Esto da como resultado una reducción en el uso de variables globales al mínimo y, por lo tanto, reduce significativamente los problemas causados por la contaminación del espacio de nombres.
Sin embargo, la especificación de la distribución del código en muchos archivos individuales también tiene desventajas. Cada archivo debe por el navegador en una separada HTTP invocación de carga, que en muchos archivos pequeños tanto de protocolo - sobrecarga puede producir. Esto puede provocar un retraso notable , especialmente para las conexiones con alta latencia . Sin embargo, esta sobrecarga al llamar varios archivos Javascript se puede compensar mediante el uso de un paquete del lado del servidor.
Existen varios marcos AMD para implementar el formato AMD, como B. RequireJS , El Dojo cargador o curl.js .
compromiso
El formato AMD proporciona una definición especial de módulo o componente que permite la declaración y carga correcta de dependencias. Por tanto, la definición del módulo se basa en convenciones de programación. Esta convención ha cambiado en muchas bibliotecas de Javascript disponibles gratuitamente, como B. Se aplica jQuery o Socket.IO .
define("Name des Moduls", ["Abhängigkeit1", "Abhängigkeit2"], factory);
El código del programa anterior ilustra la definición del módulo en formato AMD. Además del nombre del módulo y las dependencias, se define un método de fábrica a través del cual se genera el módulo. Este método de fábrica se utiliza para crear una instancia del componente y exportar posibles objetos de interfaz. Como se puede ver, se requiere una biblioteca Javascript para el uso del formato AMD, que ofrece el método de definición y crea una instancia de los diversos componentes, además de inyectar las dependencias. En el entorno AMD, esto se conoce como cargador AMD. El procedimiento corresponde en gran medida al patrón de la fábrica abstracta y la inyección de dependencia con un contenedor de IoC. De esta forma, se pueden crear instancias de cualquier componente y se pueden proporcionar las dependencias necesarias en el orden apropiado. Los componentes individuales de una aplicación JS se pueden desacoplar entre sí.
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;
};
);
enlaces web
- Wiki de la API de AMD
- ¿Por qué AMD? (Require.js)
- Escritura de JavaScript modular con AMD, CommonJS y ES Harmony