Sobes.tech
Middle

Wyjaśnij, czym jest wzorzec modułów w JavaScript i gdzie jest stosowany.

sobes.tech AI

Odpowiedź od AI

Wzorzec modułów pozwala na enkapsulację kodu, definiując interfejs publiczny i prywatny. Osiąga się to poprzez tworzenie prywatnego zakresu za pomocą wyrażeń funkcji natychmiast wywoływanych (IIFE) lub składni modułów ES.

Stosuje się go do:

  • Enkapsulacji: Ukrywa wewnętrzną implementację, zapewniając tylko potrzebny publiczny API.
  • Zapobiegania zanieczyszczeniu globalnego zakresu: Zmienne i funkcje pozostają lokalne w module.
  • Organizacji kodu: Dzieli aplikację na logiczne bloki, ułatwiając zrozumienie i utrzymanie.
  • Ponownego użycia kodu: Moduły mogą być importowane i używane w różnych częściach aplikacji.

Przykład z użyciem IIFE:

// Tworzymy prywatny zakres
const myModule = (() => {
  // Prywatna zmienna
  let privateVariable = 'Jestem prywatny!';

  // Prywatna funkcja
  const privateMethod = () => {
    console.log(privateVariable);
  };

  // Publiczna funkcja
  const publicMethod = () => {
    console.log('To jest funkcja publiczna.');
    privateMethod(); // Dostęp do prywatnej funkcji
  };

  // Zwracamy tylko elementy publiczne
  return {
    publicMethod: publicMethod
  };
})();

// Użycie interfejsu publicznego
myModule.publicMethod(); // Wyświetli "To jest funkcja publiczna." i "Jestem prywatny!"
// myModule.privateVariable; // Błąd - niedostępne
// myModule.privateMethod(); // Błąd - niedostępne

Przykład z użyciem modułów ES:

// module.js
// Prywatna zmienna (nie eksportowana)
const privateVariable = 'Jestem prywatny w module ES!';

// Prywatna funkcja (nie eksportowana)
const privateMethod = () => {
  console.log(privateVariable);
};

// Publiczna funkcja (eksportowana)
export const publicMethod = () => {
  console.log('To jest funkcja publiczna w module ES.');
  privateMethod();
};
// main.js
import { publicMethod } from './module.js';

publicMethod(); // Wyświetli "To jest funkcja publiczna w module ES." i "Jestem prywatny w module ES!"