Articles

.exportações e exportações no nó.js

Posted by admin

na programação, os módulos são unidades auto-suficientes de funcionalidade que podem ser compartilhadas e reutilizadas através de projetos. Eles tornam nossas vidas como desenvolvedores mais fáceis, pois podemos usá-los para aumentar nossas aplicações com funcionalidade que não tivemos que escrever a nós mesmos. Eles também nos permitem organizar e dissociar nosso código, levando a aplicações que são mais fáceis de entender, depurar e manter.

neste artigo, vou examinar como trabalhar com módulos no nó.js, focando em como exportá-los e consumi-los.,

diferentes formatos de Módulos

como JavaScript originalmente não tinha conceito de Módulos, uma variedade de formatos concorrentes surgiram ao longo do tempo. Aqui está uma lista das principais que devem estar cientes de:

  • o formato de definição assíncrona do módulo (AMD) é usado em navegadores e usa uma função define para definir módulos.
  • O formato CommonJS (CJS) é usado no nó.js e usa require e para definir dependências e módulos. O ecossistema npm é construído sobre este formato.
  • o formato do módulo ES (ESM)., A partir de ES6 (ES2015), JavaScript suporta um formato de módulo nativo. Ele usa um id

    palavra-chave para exportar a API pública de um módulo e um id

    palavra-chave para importá-lo.o sistema.o formato de registro foi projetado para suportar módulos ES6 dentro do ES5.

  • o formato de definição do módulo Universal (UMD) pode ser usado tanto no navegador como no nó.js. É útil quando um módulo precisa ser importado por vários carregadores de Módulo diferentes.

por favor, tenha em atenção que este artigo trata apenas do formato CommonJS, o padrão no nó.js., Se você gostaria de ler em qualquer um dos outros formatos, eu recomendo este artigo, pelo autor SitePoint Jurgen Van De Moere.

requerendo um módulo

nó.o js vem com um conjunto de módulos embutidos que podemos usar em nosso código sem ter que instalá-los. Para fazer isso, precisamos exigir o módulo usando o id

palavra-chave e atribuir o resultado a uma variável. Isto pode então ser usado para invocar quaisquer métodos que o módulo expõe.,

Por exemplo, para listar o conteúdo de um diretório, você pode usar o módulo do sistema de arquivos e seu readdir método:

Note que em CommonJS, os módulos são carregados sincronicamente e processados pela ordem em que ocorrem.

criar e exportar um módulo

Agora vamos ver como criar o nosso próprio módulo e exportá-lo para uso em outros lugares do nosso programa., Comece por criar uma user.js arquivo e adicionar o seguinte:

const getName = () => { return 'Jim';};exports.getName = getName;

Agora crie uma index.js arquivo na mesma pasta e adicione isso:

const user = require('./user');console.log(`User: ${user.getName()}`);

Executar o programa usando o node index.js e você deve ver a seguinte saída para o terminal:

User: Jim

Então, o que tem acontecido aqui?, Bem, se você olhar para o user.js arquivo, você vai notar que estamos definindo uma getName função e, em seguida, usando o exports palavra-chave para torná-lo disponível para importar em outro lugar. Em seguida, no arquivo index.js, estamos importando esta função e executando-a. Note também que na declaração require, o nome do módulo é prefixado com ./, uma vez que é um arquivo local. Note também que não há necessidade de adicionar a extensão de arquivo.,

Exportar Vários Métodos e Valores

Nós podemos exportar vários métodos e valores da mesma forma:

E index.js:

const user = require('./user');console.log( `${user.getName()} lives in ${user.getLocation()} and was born on ${user.dob}.`);

O código acima produz este:

Jim lives in Munich and was born on 12.01.1982.

Observe que como o nome que damos a exportados dateOfBirth variável pode ser qualquer coisa que fantasia (dob neste caso). Não tem de ser o mesmo que o nome da variável original.,

variações na sintaxe

também deve mencionar que é possível exportar métodos e valores à medida que você vai, não apenas no final do arquivo.

Por exemplo:

exports.getName = () => { return 'Jim';};exports.getLocation = () => { return 'Munich';};exports.dob = '12.01.1982';

E graças a desestruturação de atribuição, podemos cherry-pick o que deseja importar:

const { getName, dob } = require('./user');console.log( `${getName()} was born on ${dob}.`);

Como você poderia esperar, este logs:

Jim was born on 12.01.1982.

Exportar um Valor Predefinido

No exemplo acima, estamos exportando funções e valores individualmente., Isso é útil para funções auxiliares que poderia ser necessário todo um app, mas quando você tem um módulo que exporta somente a uma coisa, é mais comum o uso de module.exports:

E index.js:

const User = require('./user');const jim = new User('Jim', 37, '[email protected]');console.log(jim.getUserStats());

O código acima faz esse:

Name: JimAge: 37Email: [email protected]

Qual a Diferença Entre o módulo.exportações e exportações?,

Em suas viagens por toda a Web, você pode se deparar com a seguinte sintaxe:

module.exports = { getName: () => { return 'Jim'; }, getLocation: () => { return 'Munich'; }, dob: '12.01.1982',};

Aqui estamos atribuindo as funções e os valores que deseja exportar para um exports propriedade module — e, claro, isso funciona muito bem:

const { getName, dob } = require('./user');console.log( `${getName()} was born on ${dob}.`);

Este regista o seguinte:

Jim was born on 12.01.1982.

Então, qual é a diferença entre module.exports e exports? Um é só um nome falso para o outro?,

Bem, meio, mas não muito …

Para ilustrar o que quero dizer, vamos alterar o código index.js para registar o valor de module:

console.log(module);

Este produz:

Como você pode ver, module tem uma exports propriedade. Vamos adicionar algo a ele:

// index.jsexports.foo = 'foo';console.log(module);

Este saídas:

Module { id: '.', exports: { foo: 'foo' }, ...

a Atribuição de propriedades de exports também adiciona-los para module.exports., Isto porque (inicialmente, pelo menos) exports é uma referência a .qual deles devo usar?

module.exports e exports ambos apontam para o mesmo objeto, ele normalmente não importa o que você usa. Por exemplo:

exports.foo = 'foo';module.exports.bar = 'bar';

este código resultaria no objeto exportado do Módulo ser .

no entanto, há uma advertência. O que você atribuir module.exports é o que é exportado do seu módulo.,

assim, tome o seguinte:

exports.foo = 'foo';module.exports = () => { console.log('bar'); };

isto só resultaria na exportação de uma função anónima. A variável foo seria ignorada.

Se você gostaria de ler mais sobre a diferença, eu recomendo este artigo.

conclusão

Módulos tornaram-se parte integrante do ecossistema JavaScript, permitindo-nos compor grandes programas a partir de partes menores. Espero que este artigo lhe tenha dado uma boa introdução para trabalhar com eles no nó.js, bem como ajudar a desmistificar sua sintaxe.

Leave A Comment