Junior
Ce sunt modulele ES?
sobes.tech AI
Răspuns de la AI
Modulele ES sunt metoda standard de organizare a codului în JavaScript, bazată pe sintaxa import și export.
Caracteristici principale:
- Standard: Parte a specificației ECMAScript, suportată de majoritatea browserelor moderne și mediilor de execuție precum Node.js.
- Gestionare explicită a dependențelor: Modulele indică clar valorile pe care le exportă și valorile pe care le importă din alte module.
- Structură statică: Dependențele modulelor sunt determinate în timpul compilării (sau analizei), nu în timpul execuției. Acest lucru permite instrumentelor de analiză statică, precum bundlerele (Webpack, Rollup), să optimizeze codul.
- Izolare: Fiecare variabilă, funcție sau clasă declarată în interiorul unui modul este, implicit, locală pentru acel modul. Pentru a fi accesibile din exterior, trebuie exportate explicit.
- Suport pentru asincronie: Modulele pot fi încărcate asincron în browsere, fără a bloca încărcarea paginii.
Sintaxă:
- Export:
// app.js export const myVariable = 123; // Export numit export function myFunction() { // Export numit console.log('Salut din modul!'); } export default class MyClass { // Export implicit constructor() { console.log('Instanță MyClass creată'); } } - Import:
// main.js import { myVariable, myFunction } from './app.js'; // Import numit import MyDefaultClass from './app.js'; // Import implicit console.log(myVariable); // 123 myFunction(); // Salut din modul! const instance = new MyDefaultClass(); // Instanță MyClass creată
Comparativ cu CommonJS (Node.js):
| Caracteristici | Modulele ES | CommonJS |
|---|---|---|
| Sintaxă | import, export |
require, module.exports, exports |
| Dependențe | Statice (determinată înainte de execuție) | Dinamice (determinată în timpul execuției) |
| Încărcare | Asincronă (în browser) | Sincronă |
this în rădăcină |
undefined |
module.exports |
| Suport | Browsere, Node.js (din versiunea 13.2, cu flag-ul --experimental-modules anterior) | În principal Node.js |
Utilizarea modulelor ES este abordarea recomandată pentru dezvoltarea frontend modern datorită standardizării, suportului mai bun din partea instrumentelor și capacității de analiză statică.