Sobes.tech
Middle

Vysvětlete, co je to vzor modulů v JavaScriptu a kde se používá.

sobes.tech AI

Odpověď od AI

Vzor modulů umožňuje enkapsulaci kódu definováním veřejného a soukromého rozhraní. Toho je dosaženo vytvořením soukromého rozsahu pomocí výrazů funkce, které jsou ihned volány (IIFE), nebo syntaxe modulů ES.

Použití:

  • Enkapsulace: Skrývá interní implementaci a poskytuje pouze potřebné veřejné API.
  • Prevence znečištění globálního prostoru: Proměnné a funkce zůstávají lokální uvnitř modulu.
  • Organizace kódu: Rozděluje aplikaci na logické bloky, což usnadňuje pochopení a údržbu.
  • Opětovné použití kódu: Moduly lze importovat a používat v různých částech aplikace.

Příklad s použitím IIFE:

// Vytvoříme soukromý rozsah
const myModule = (() => {
  // Soukromá proměnná
  let privateVariable = 'Jsem soukromý!';

  // Soukromá funkce
  const privateMethod = () => {
    console.log(privateVariable);
  };

  // Veřejná funkce
  const publicMethod = () => {
    console.log('Toto je veřejná funkce.');
    privateMethod(); // Přístup k soukromé funkci
  };

  // Vrací pouze veřejné členy
  return {
    publicMethod: publicMethod
  };
})();

// Použití veřejného rozhraní
myModule.publicMethod(); // Vypíše "Toto je veřejná funkce." a "Jsem soukromý!"
// myModule.privateVariable; // Chyba - nedostupné
// myModule.privateMethod(); // Chyba - nedostupné

Příklad s použitím modulů ES:

// module.js
// Soukromá proměnná (neexportovaná)
const privateVariable = 'Jsem soukromý v ES modulu!';

// Soukromá funkce (neexportovaná)
const privateMethod = () => {
  console.log(privateVariable);
};

// Veřejná funkce (exportovaná)
export const publicMethod = () => {
  console.log('Toto je veřejná funkce v ES modulu.');
  privateMethod();
};
// main.js
import { publicMethod } from './module.js';

publicMethod(); // Vypíše "Toto je veřejná funkce v ES modulu." a "Jsem soukromý v ES modulu!"