10. Os módulos ES6

Os módulos ES6 permitem criar aplicações JavaScript estruturadas em módulos independentes e reutilizáveis.
10.1. scripts [import-01, export-01]
O script [import-01] irá utilizar o módulo [export-01]. Este está definido da seguinte forma:
// exportação por predefinição de um objeto sem nome
export default {
data: 2,
do() {
console.log(this.data);
}
};
Comentários
- as linhas [2-7] definem um objeto sem nome com as propriedades [data, do];
- linha 2: a instrução [export default] exporta este objeto. Assim, este poderá ser importado;
O módulo [export-01] é utilizado pelo script [import-01] da seguinte forma:
'use strict';
// importação de um objeto exportado por predefinição
import export01 from './export-01';
// utilização deste objeto
export01.do();
// é possível importar uma exportação por predefinição com qualquer nome
import data from './export-01';
console.log(data.data);
Comentários
- as linhas 3 e 7 importam o objeto exportado por predefinição do módulo [export-01] com dois nomes diferentes;
- uma vez importado um objeto, este pode ser utilizado como se tivesse sido definido localmente no script;
Execução
[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]
Estes scripts mostram a exportação de um objeto com nome.
O script [export-02] é o seguinte:
// exportação por predefinição de um objeto com nome
const data = {
data: 2,
do() {
console.log(this.data);
}
};
// exportação
export default data;
- linha 9: exporta-se o objeto [data];
O facto de o objeto exportado ter ou não um nome não altera a operação de importação. O script [import-02] é o seguinte:
'use strict';
// importação de um objeto exportado por predefinição
import module1 from './export-02';
// utilização deste objeto
module1.do();
// é possível importar uma exportação por predefinição com qualquer nome
import module2 from './export-02';
console.log(module2.data);
Execução
[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]
Um módulo pode exportar vários elementos.
O script [export-03] é o seguinte:
// exportações múltiplas
// exportação de objeto
const data = {
data: 2,
do() {
console.log(this.data);
}
};
// função de exportação
export { data };
function doSomething() {
console.log("doSomething");
}
export { doSomething };
Comentários
- linhas 10 e 14: exportação de dois elementos. A exportação de um elemento é feita com a sintaxe [export {élément}];
O script [import-03] utiliza o módulo [export-03] da seguinte forma:
'use strict';
// importação de um módulo [export03]
import {data, doSomething} from './export-03';
// utilização das importações
data.do();
doSomething();
// outra forma de escrita
import * as module from './export-03';
// utilização da importação
console.log(module.data);
module.doSomething();
- linha 3: os [imports] são criados com os nomes exatos dos objetos exportados;
- linha 8: é possível importar todos os objetos exportados para um objeto com nome (neste caso, [module]);
Execução
[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