class MinhaClasse { // Codigo aqui .. }
module.exports = MinhaClasse
module.exports = () => { // Codigo aqui ... }
const modulo = require('modulo')
module.exports = modulo
class MinhaClasse { // Codigo aqui .. }
module.exports = MinhaClasse
module.exports = () => { // Codigo aqui ... }
const modulo = require('modulo')
module.exports = modulo
Oi Jailson, tudo bom?
Quando exportamos algo com o module.exports estamos possibilitando que outras partes da nossa aplicação usem uma api do modulo que definimos.
Se exportarmos uma classe damos a possibilidade de outros módulos instanciarem essa classe e estenderem ela. Isso é diferente de exportarmos uma instância da classe, nesse segundo caso sempre que alguém chamar o require
vai receber a mesma instância e não uma nova ( basicamente um singleton pattern, que não é muito interessante de ser criado )
Já quando exportamos uma função damos a possibilidade de outros módulos utilizarem aquela função o que facilita a reutilização de código. Por exemplo se queremos validar um CPF eu posso ter um módulo que recebe um CPF como parâmetro e devolve true/false se ele é verdadeiro ou falso. Dessa forma só preciso importar o modulo de validação e utilizar ele.
O mesmo vale para as Variáveis e constantes, ao exportarmos elas, todos outros módulos do sistema tem acesso ao conteúdo delas e podem usar em alguma tarefa delas. Esse é o caso mais raro e o melhor é sempre exportarmos constates, pq se algum modulo usa uma variável para definir seu estado interno e ou terceiro modulo vai la e altera essa variável o sistema pode ter comportamentos indefinidos e super difíceis de debugar
Vlw ricardo, muito obrigado cara.