1
resposta

Por que não precisamos mais utilizar IIFE quando transformamos o arquivo em módulo?

Não estava entendendo muito bem o porquê de não precisarmos mais executar uma IIFE após transformar o código em módulos. Então, a fim de testar o funcionamento, eu retirei todo o código dos arquivos concluiTarefa.js e deletaTarefa.js, retirando os imports e exports e colocando 100% do código no main.js. Notei que mesmo assim as funções não podiam ser acessadas externamente, e elas só voltaram a ser expostas quando eu tirei ' type = "module" ' do html na linha que carrega o script. Dessa forma, me ficou a dúvida: Como que apenas utilizar ' type = "module ' faz as funções do arquivo javascript ficarem encapsuladas, mesmo sem utilizar uma IIFE e mesmo sem escapsular utilizando export e import?

1 resposta

Fala ai André, tudo bem? Isso é devido ao funcionamento do ESModules, basicamente apenas funções explicitamente expostas com export estarão disponíveis para outros módulos utilizarem.

E apenas as funções que forem importadas com import poderão ser utilizadas dentro de um módulo.

Dessa forma, internamente no controle de módulos do Navegador e demais ferramentas de build acaba tornando isso em contextos e escopos.

Obs: Tem algumas pegadinhas no meio disso tudo, mas, não vem ao caso no momento.

Espero ter ajudado.