Middle
Explique o que é o padrão de módulos em JavaScript e onde é aplicado.
sobes.tech IA
Resposta da IA
O padrão de módulos permite encapsular o código definindo uma interface pública e privada. Isso é alcançado criando um escopo privado usando expressões de função imediatamente invocadas (IIFE) ou a sintaxe de Módulos ES.
Aplicado para:
- Encapsulamento: Esconde a implementação interna, fornecendo apenas a API pública necessária.
- Prevenção de poluição do escopo global: Variáveis e funções permanecem locais dentro do módulo.
- Organização do código: Divide a aplicação em blocos lógicos, facilitando a compreensão e manutenção.
- Reutilização do código: Módulos podem ser importados e utilizados em diferentes partes da aplicação.
Exemplo usando IIFE:
// Criar um escopo privado
const myModule = (() => {
// Variável privada
let privateVariable = 'Sou privado!';
// Função privada
const privateMethod = () => {
console.log(privateVariable);
};
// Função pública
const publicMethod = () => {
console.log('Esta é uma função pública.');
privateMethod(); // Acesso à função privada
};
// Retornar apenas membros públicos
return {
publicMethod: publicMethod
};
})();
// Uso da interface pública
myModule.publicMethod(); // Mostrará "Esta é uma função pública." e "Sou privado!"
// myModule.privateVariable; // Erro - não acessível
// myModule.privateMethod(); // Erro - não acessível
Exemplo usando Módulos ES:
// module.js
// Variável privada (não exportada)
const privateVariable = 'Sou privado no ES Module!';
// Função privada (não exportada)
const privateMethod = () => {
console.log(privateVariable);
};
// Função pública (exportada)
export const publicMethod = () => {
console.log('Esta é uma função pública no ES Module.');
privateMethod();
};
// main.js
import { publicMethod } from './module.js';
publicMethod(); // Mostrará "Esta é uma função pública no ES Module." e "Sou privado no ES Module!"