Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Qual a diferença de cada export

Boa tarde galera, algue sabe me dizer a diferença em utilizar cada tipo de export de modulo no nodeJs

Tenho acompanhado alguns conteudos e cada um utilizam de uma forma exemplo:

export class ClassName {
  // Implementation
}

ou 

export default class ClassName {
  // Implementation
}

ou 

class ClassName {
  // Implementation
}

export default ClassName 

ou 

class ClassName {
  // Implementation
}

export { ClassName }

ou 

class ClassName {
  // Implementation
}

module.exports(ClassName)
3 respostas
solução!

Oi Felipe, tudo certo?

Basicamente a diferença se dará nos imports.

Há o export default e o named.

export default class ClassName {
  // Implementation
}

ou 

class ClassName {
  // Implementation
}

export default ClassName 

Os modos acima são default. Você poderá importar a classe com o nome que você quiser.

import MinhaClasse from './pathRelativo/PastaDaMinhaClasse/NomeDoArquivo.js'

const novaInstancia = new MinhaClasse()

Temos as opções de exportar nomeado...

export class ClassName {
  // Implementation
}

ou 

class ClassName {
  // Implementation
}

export { ClassName }

Nos casos acima você é obrigado a usar o mesmo nome da classe exportada. Você consegue manter um padrão se fizer nesse modo pois não corre o risco de exportar um nome e importar com outro causando algumas dúvidas quando for dar manutenção no código.

import { ClassName } from './path'

const novaInstancia = new ClassName()

Esses exemplos são formas de export e import implementadas pelo ES6.

O exemplo abaixo é CommonJS. Se encaixa como export defult.

class ClassName {
  // Implementation
}

module.exports(ClassName)

Muito obrigado me ajudou bastante a entender.

Então nesse caso tenho 2 formas de export default e 2 do export named no EC6.

No caso então se eu optar por utilizar named se utilizo o export antes da classe

export class ClassName {}

ou no final do arquivo

class ClassName {} export { ClassName }

terá o mesmo comportamento no node ?

Isso mesmo!

Ambos, no exemplo que você citou, serão importados da mesma forma.

import { ClassName } from './path'