Middle
Explica ce este modelul de module în JavaScript și unde se aplică.
sobes.tech AI
Răspuns de la AI
Patternul modulului permite încapsularea codului definind o interfață publică și privată. Acest lucru se realizează prin crearea unui domeniu privat folosind expresii de funcție invocate imediat (IIFE) sau sintaxa modulelor ES.
Se aplică pentru:
- Încapsulare: Ascunde implementarea internă, oferind doar API-ul public necesar.
- Prevenirea poluării domeniului global: Variabilele și funcțiile rămân locale în interiorul modulului.
- Organizarea codului: Împarte aplicația în blocuri logice, facilitând înțelegerea și întreținerea.
- Reutilizarea codului: Modulele pot fi importate și utilizate în diferite părți ale aplicației.
Exemplu cu utilizarea IIFE:
// Creăm un domeniu privat
const myModule = (() => {
// Variabilă privată
let privateVariable = 'Sunt privat!';
// Funcție privată
const privateMethod = () => {
console.log(privateVariable);
};
// Funcție publică
const publicMethod = () => {
console.log('Aceasta este o funcție publică.');
privateMethod(); // Acces la funcția privată
};
// Returnăm doar membrii publici
return {
publicMethod: publicMethod
};
})();
// Utilizarea interfeței publice
myModule.publicMethod(); // Va afișa "Aceasta este o funcție publică." și "Sunt privat!"
// myModule.privateVariable; // Eroare - inaccesibil
// myModule.privateMethod(); // Eroare - inaccesibil
Exemplu cu utilizarea modulelor ES:
// module.js
// Variabilă privată (neexportată)
const privateVariable = 'Sunt privat în modul ES!';
// Funcție privată (neexportată)
const privateMethod = () => {
console.log(privateVariable);
};
// Funcție publică (exportată)
export const publicMethod = () => {
console.log('Aceasta este o funcție publică în modul ES.');
privateMethod();
};
// main.js
import { publicMethod } from './module.js';
publicMethod(); // Va afișa "Aceasta este o funcție publică în modul ES." și "Sunt privat în modul ES!"