Módulos ES do Node.js

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 .jsquando o arquivo pai mais próximo package.jsoncontém um campo de nível superior "type"com valor "module".
  • Passe o argumento --evalou pied para o comando do nó via STDINwith flag --input-type=module.

Módulo Node.js ES por meio de arquivos .mjs

Primeiro, crie um novo arquivo chamado math.mjse 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 mathmódulo:

  • Primeiro, defina as funções adde subtract.
  • Segundo, exporte a função addand subtractusando a exportinstrução.

Segundo, crie um novo arquivo chamado app.mjsque use o mathmó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.mjsarquivo:

  • Primeiro, importe as funções adde substractdo mathmódulo usando a importinstrução.
  • Segundo, chame as funções adde subtract.

Terceiro, execute o app.mjsarquivo usando o nodecomando:

node app.mjsLinguagem 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.jstratamos todos eles como módulos ES.

Módulo Node.js ES com tipo module em package.json

Primeiro, renomeie o math.mjse app.mjspara math.jse app.js.

Segundo, crie um package.jsonarquivo com o campo de nível superior typecom o valor "module":

{
    "type":"module"
}Linguagem de código:  JSON/JSON com comentários  ( json )

Terceiro, execute o app.jsarquivo usando o nodecomando:

node app.jsLinguagem 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 nodecomando com o evalargumento 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 --evalargumento:

import { delimiter } from 'path';console.log(delimiter);Linguagem de código:  JavaScript  ( javascript )

Isso importa o delimitador do pathmó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=moduleLinguagem 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 .mjsou a package.jsoncom o campo de nível superior type="module"se desejar que o Node.js trate os arquivos como módulos ES.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *