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.