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

Dúvida, como o require funciona

Olá , boa tarde, eu não consegui pegar a essência de como o require funciona, você poderia me explicar de alguma outra forma, eu não consegui entender a partir que ele carrega o module

6 respostas

Oi Cleusa,

Vamos lá :). Você tem no seu projeto vários arquivos que exportam funções, classes etc... Lembra do código:

module.exports = function(){...}

Nesse exemplo você estaria criando um arquivo que exporta uma função. A pergunta que fica é: exporta para quem?

Se vc ta exportando, quer dizer que alguém precisa importar isso, e é justamente aí que entra o require. Você usa o require para importa o que foi exportado dos outros arquivos do seu projeto.

Sim, isso eu entendi, a minha dúvida é como ele utiliza o objeto module e a propriedade exports por baixo dos panos e exporta o codigo ,e quando eu chamo module.exports de onde vem esse tal de module.exports e como o require consegue carregar a funcao ou objeto exportado , gostaria de saber como isso funciona, como o require consegue achar como e o que é pra importar!!!

Em javascript existe uma função que chama eval, onde vc passa uma string com código javascript e ele interpreta pra vc. O node lê o conteúdo do seu arquivo e executa ele dentro de uma função que recebe como argumento um objeto literal através dá variável chamada module. Esse objeto literal tem uma propriedade chamada exporta, que vc utiliza para atribuir um valor, que pode ser um objeto, função...

O require faz isso :).

Pelo que eu entendi, toda vez que você chama o require() e passa pra ele o path , esse path serve para procurar o arquivo que contem o modulo que vc quer carregar, entao ao receber esse arquivo a funcao eval executa esse codigo que foi pego por I/O é isso??, agora a pergunta é o module.exports em cada modulo que vc chama , como que ao chamar o require o objeto litera module com a propriedade exports e passado como parametro e a funcao que executa o node consegue te devolver isso, eu to meio confuso, em relação a isso, ainda não ficou claro, voce poderia me dar um exemplo com algum código de esboço, por favor, porque não estou conseguindo entender ainda o conceito do exports

solução!
const codigoDoModulo = carrega o codigo do arquivo
const funcaoComModuleComoArgumento = 'function(module){'+codigoDoModulo+'}';
const module = {exports:{}};

eval(funcaoComModuleComoArgumento)

É mais ou menos isso aí...

entendi, ainda bem que nada é magica kkkk, obrigado professor!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software