Expor a funcionalidade de um arquivo Node.js usando exportações
O Node.js tem um sistema de módulos nativo.
Um arquivo Node.js pode importar funcionalidades expostas por outros arquivos Node.js.
Quando você quer importar algo você deve utilizar
const library = require('./library')
para importar a funcionalidade exposta no arquivo library.js
que reside na pasta atual.
Nesse arquivo, a funcionalidade deve ser exposta antes de poder ser importada por outros arquivos.
Qualquer outra variável ou objeto definido no arquivo é privado por padrão e não exposto ao mundo exterior.
Isso é permitido por meio da API module.exports
, oferecida pelo module
system.
Quando você atribui um objeto ou uma função como uma nova propriedade do exports
, isso se torna o que está sendo exposto, e como tal, pode ser importado em outras partes da sua aplicação, ou até em outras aplicações.
Você pode fazer isso de 2 formas.
A primeira é atribuir um objeto ao module.exports
, que é um objeto provido nativamente pelo sistema de módulos, e ele fará com que o arquivo exporte apenas aquele objeto:
const car = {brand: 'Ford',model: 'Fiesta'}module.exports = car//..em outro arquivoconst car = require('./car')
A segunda é definir o objeto exportado como propriedade do exports
. Essa abordagem permite que você exporte múltiplos objetos, funções ou dados:
const car = {brand: 'Ford',model: 'Fiesta'}exports.car = car
ou diretamente
exports.car = {brand: 'Ford',model: 'Fiesta'}
Em outro arquivo, você irá utilizá-lo referenciando a propriedade da sua importação:
const items = require('./items')items.car
ou
const car = require('./items').car
Qual a diferença entre module.exports
e exports
?
O primeiro expõe o objeto para qual ele aponta. O último expõe as propriedades do objeto que ele aponta.