10. Los módulos ES6

Los módulos ES6 permiten crear aplicaciones de JavaScript estructuradas en módulos independientes y reutilizables.
10.1. Scripts [import-01, export-01]
El script [import-01] utilizará el módulo [export-01]. Este se define de la siguiente manera:
// exportación por defecto de un objeto sin nombre
export default {
data: 2,
do() {
console.log(this.data);
}
};
Comentarios
- las líneas [2-7] definen un objeto sin nombre con las propiedades [data, do];
- línea 2: la instrucción [export default] exporta este objeto. Por lo tanto, este podrá importarse;
El módulo [export-01] es utilizado por el script [import-01] de la siguiente manera:
'«use strict»;
// importación de un objeto exportado por defecto
import export01 from './export-01';
// uso de este objeto
export01.do();
// se puede importar una exportación por defecto con cualquier nombre
import data from './export-01';
console.log(data.data);
Comentarios
- las líneas 3 y 7 importan el objeto exportado por defecto del módulo [export-01] con dos nombres diferentes;
- una vez importado un objeto, se puede utilizar como si se hubiera definido localmente en el script;
Ejecución
[Running] C:\myprograms\laragon-lite\bin\nodejs\node-v10\node.exe -r esm "c:\Data\st-2019\dev\es6\javascript\modules\import-01.js"
2
2
10.2. scripts [import-02, export-02]
Estos scripts muestran la exportación de un objeto con nombre.
El script [export-02] es el siguiente:
// exportación por defecto de un objeto con nombre
const data = {
data: 2,
do() {
console.log(this.data);
}
};
// exportación
export default data;
- línea 9: se exporta el objeto [data];
El hecho de que el objeto exportado tenga nombre o no no afecta a la operación de importación. El script [import-02] es el siguiente:
'use strict';
// importación de un objeto exportado por defecto
import module1 from './export-02';
// uso de este objeto
module1.do();
// se puede importar una exportación por defecto con cualquier nombre
import module2 from './export-02';
console.log(module2.data);
Ejecución
[Running] C:\myprograms\laragon-lite\bin\nodejs\node-v10\node.exe -r esm "c:\Data\st-2019\dev\es6\javascript\modules\import-02.js"
2
2
10.3. scripts [import-03, export-03]
Un módulo puede exportar varios elementos.
El script [export-03] es el siguiente:
// exportaciones múltiples
// exportación de objeto
const data = {
data: 2,
do() {
console.log(this.data);
}
};
// función de exportación
export { data };
function doSomething() {
console.log("doSomething");
}
export { doSomething };
Comentarios
- líneas 10 y 14: exportación de dos elementos. La exportación de un elemento se realiza con la sintaxis [export {élément}];
El script [import-03] utiliza el módulo [export-03] de la siguiente manera:
'use strict';
// importación de un módulo [export03]
import {data, doSomething} from './export-03';
// uso de las importaciones
data.do();
doSomething();
// otra forma de escribirlo
import * as module from './export-03';
// uso de la importación
console.log(module.data);
module.doSomething();
- línea 3: los [imports] se crean con los nombres exactos de los objetos exportados;
- línea 8: se pueden importar todos los objetos exportados a un objeto con nombre (en este caso, [module]);
Ejecución
[Running] C:\myprograms\laragon-lite\bin\nodejs\node-v10\node.exe -r esm "c:\Data\st-2019\dev\es6\javascript\modules\import-03.js"
2
doSomething
{ data: 2, do: [Function: do] }
doSomething