Sobes.tech
Junior

Čo sú ES moduly?

sobes.tech AI

Odpoveď od AI

ES moduli sú štandardným spôsobom organizácie kódu v JavaScripte, založeným na syntaxe import a export.

Hlavné vlastnosti:

  • Štandard: Časť špecifikácie ECMAScript, podporovaná väčšinou moderných prehliadačov a prostredí na vykonávanie, ako je Node.js.
  • Jasné riadenie závislostí: Moduly jasne uvádzajú, ktoré hodnoty exportujú a ktoré importujú z iných modulov.
  • Statická štruktúra: Závislosti modulov sú určené v štádiu kompilácie (alebo parsovania), nie pri vykonávaní. To umožňuje nástrojom na statickú analýzu, ako sú bundlery (Webpack, Rollup), optimalizovať kód.
  • Izolácia: Každá premenná, funkcia alebo trieda, oznámená v rámci modulu, je predvolene lokálna pre tento modul. Aby boli dostupné zvonku, musia byť jasne exportované.
  • Podpora asynchrónnosti: Moduly môžu byť načítané asynchrónne v prehliadačoch, bez blokovania načítania stránky.

Syntax:

  • Export:
    // app.js
    export const myVariable = 123; // Meno-špecifický export
    export function myFunction() { // Meno-špecifický export
      console.log('Hello from module!');
    }
    export default class MyClass { // Export predvolený
      constructor() {
        console.log('MyClass instance created');
      }
    }
    
  • Import:
    // main.js
    import { myVariable, myFunction } from './app.js'; // Meno-špecifický import
    import MyDefaultClass from './app.js'; // Import predvolený
    
    console.log(myVariable); // 123
    myFunction(); // Hello from module!
    const instance = new MyDefaultClass(); // MyClass instance created
    

Porovnanie s CommonJS (Node.js):

Vlastnosť ES-moduly CommonJS
Syntax import, export require, module.exports, exports
Závislosti Statické (určené pred vykonaním) Dynamické (určené počas vykonávania)
Načítanie Asynchrónne (v prehliadačoch) Synchrónne
this v koreňovom undefined module.exports
Podpora Prehliadače, Node.js (štandardne od verzie 13.2, cez vlajku --experimental-modules predtým) Väčšinou Node.js

Používanie ES-modulov je odporúčaný prístup pre moderný frontend vývoj vďaka ich štandardizácii, lepšej podpore nástrojmi a možnosti statickej analýzy.