Resumo : neste tutorial, você aprenderá como usar módulos ES em Node.js por meio das instruções de importação e exportação.
JavaScript usa o módulo ECMAScript (ou módulo ES) para criar pacotes para reutilização. Além do módulo CommonJS, o Node.js suporta módulos ES na versão 14.0.0.
Portanto, o Node.js possui dois tipos de módulos: módulos ES e módulos CommonJS.
Por padrão, o Node.js trata o JavaScript como módulos CommonJS. Mas você pode dizer ao Node.js para tratar o código JavaScript como módulos ES.
O Node.js tratará os seguintes arquivos como módulos ES:
- Arquivos terminando em
.mjs
- Arquivos que terminam em
.js
quando o arquivo pai mais próximopackage.json
contém um campo de nível superior"type"
com valor"module"
. - Passe o argumento
--eval
ou pied para o comando do nó viaSTDIN
with flag--input-type=module
.
Módulo Node.js ES por meio de arquivos .mjs
Primeiro, crie um novo arquivo chamado math.mjs
e adicione o seguinte código:
function add(x,y) {
return x + y;
}
function subtract(x,y){
return x - y;
}
export { add, subtract};
Linguagem de código: JavaScript ( javascript )
No math
módulo:
- Primeiro, defina as funções
add
esubtract
. - Segundo, exporte a função
add
andsubtract
usando aexport
instrução.
Segundo, crie um novo arquivo chamado app.mjs
que use o math
módulo:
import { add, subtract } from './math.mjs';
let result = add(20, 10);
console.log(result);
result = subtract(30, 10);
console.log(result);
Linguagem de código: JavaScript ( javascript )
No app.mjs
arquivo:
- Primeiro, importe as funções
add
esubstract
domath
módulo usando aimport
instrução. - Segundo, chame as funções
add
esubtract
.
Terceiro, execute o app.mjs
arquivo usando o node
comando:
node app.mjs
Linguagem de código: CSS ( css )
E você deverá ver o seguinte no console:
{ result: 30 }
{ result: 20 }
Linguagem de código: CSS ( css )
Neste exemplo, usamos os arquivos que terminam em .mjs
, node.js
tratamos todos eles como módulos ES.
Módulo Node.js ES com tipo module em package.json
Primeiro, renomeie o math.mjs
e app.mjs
para math.js
e app.js
.
Segundo, crie um package.json
arquivo com o campo de nível superior type
com o valor "module"
:
{
"type":"module"
}
Linguagem de código: JSON/JSON com comentários ( json )
Terceiro, execute o app.js
arquivo usando o node
comando:
node app.js
Linguagem de código: CSS ( css )
E você deverá ver a mesma saída mostrada no primeiro exemplo.
Módulo Node.js ES com o argumento eval
O exemplo a seguir executa o node
comando com o eval
argumento e o --input-type=module
:
node --input-type=module --eval "import { delimiter } from 'path'; console.log(delimiter);"
Linguagem de código: JavaScript ( javascript )
Neste exemplo, passamos o seguinte código para o --eval
argumento:
import { delimiter } from 'path';console.log(delimiter);
Linguagem de código: JavaScript ( javascript )
Isso importa o delimitador do path
módulo e o envia para o console.
Da mesma forma, você pode usar o seguinte comando:
echo "import { delimiter } from 'path'; console.log(delimiter);" | node --input-type=module
Linguagem de código: JavaScript ( javascript )
Resumo
- Node.js suporta módulos CommonJS e módulos ES
- Por padrão, o Node.js trata os arquivos como módulos CommonJS.
- Use
.mjs
ou apackage.json
com o campo de nível superiortype="module"
se desejar que o Node.js trate os arquivos como módulos ES.