Skip to content

10. Los módulos ES6

Image

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