Sobes.tech
Middle

Paaiškinkite, kas yra modulio modelis JavaScript'e ir kur jis taikomas.

sobes.tech AI

Atsakymas iš AI

Moduolių šablonas leidžia inkapsuliuoti kodą, apibrėžiant viešą ir privačią sąsają. Tai pasiekiama naudojant tiesiogiai kviečiamas funkcines išraiškas (IIFE) arba ES modulų sintaksę, sukuriant privačią matomumo sritį:

Naudojama:

  • Inkapuliacija: Slėpia vidinę įgyvendinimą, teikdama tik būtiną viešą API.
  • Apsauga nuo globalios srities užteršimo: Kintamieji ir funkcijos lieka modulyje, vietiniai.
  • Kodo organizavimas: Suskirsto programą į loginės blokų, palengvindamas supratimą ir palaikymą.
  • Kodo pakartotinis naudojimas: Moduliai gali būti importuojami ir naudojami skirtingose programos dalyse.

Pavyzdys naudojant IIFE:

// Sukuriama privačios matomumo srities
const myModule = (() => {
  // Privačios kintamasis
  let privateVariable = 'Aš esu privačias!';

  // Privačios funkcijos
  const privateMethod = () => {
    console.log(privateVariable);
  };

  // Viešos funkcijos
  const publicMethod = () => {
    console.log('Tai vieša funkcija.');
    privateMethod(); // prieiga prie privačios funkcijos
  };

  // Grąžina tik viešus narius
  return {
    publicMethod: publicMethod
  };
})();

// Naudojimas viešojo sąsajos
myModule.publicMethod(); // Išves "Tai vieša funkcija." ir "Aš esu privačias!"
// myModule.privateVariable; // Klaida - neprieinama
// myModule.privateMethod(); // Klaida - neprieinama

Pavyzdys naudojant ES modulius:

// module.js
// Privačios kintamosios (neeksportuojamos)
const privateVariable = 'Aš esu privačias ES modulyje!';

// Privačios funkcijos (neeksportuojamos)
const privateMethod = () => {
  console.log(privateVariable);
};

// Viešos funkcijos (eksportuojamos)
export const publicMethod = () => {
  console.log('Tai vieša funkcija ES modulyje.');
  privateMethod();
};
// main.js
import { publicMethod } from './module.js';

publicMethod(); // Išves "Tai vieša funkcija ES modulyje." ir "Aš esu privačias ES modulyje!"