Sobes.tech
Middle

Come funzionano i moduli in ES Modules?

sobes.tech AI

Risposta dell'AI

I moduli in ES Modules funzionano in base a un'analisi statica degli import e export. Il browser o l'ambiente di esecuzione analizza i file JavaScript, determina le dipendenze tra i moduli prima di eseguire il codice e crea un grafo delle dipendenze.

Principi di funzionamento:

  • Analisi statica: Gli import e export sono determinati prima dell'esecuzione del codice, consentendo di ottimizzare il caricamento e di individuare errori in fase precoce.
  • Collegamento univoco: Ogni import si collega a un export specifico in un altro modulo.
  • Istanza singola: Il modulo viene eseguito una sola volta alla prima importazione. Tutte le importazioni successive ottengono un riferimento alla stessa istanza.

Ciclo di vita del modulo:

  1. Costruzione: Il codice sorgente del modulo viene analizzato, vengono identificati gli import e export. Viene creata una shell del modulo.
  2. Caricamento: Vengono caricati tutti i moduli importati. Se la dipendenza non è in cache, viene effettuata una richiesta alla rete o al filesystem.
  3. Collegamento: Gli import e export vengono collegati. Le variabili e le funzioni dei moduli importati diventano disponibili per l'uso. Se l'import non può essere risolto, viene generato un errore.
  4. Esecuzione: Viene eseguito il codice del modulo. Tutti i valori esportati diventano disponibili per i moduli che li importano.

Esempi:

// moduleA.js
export const name = 'Alice';
export function sayHello() {
  console.log(`Hello, ${name}!`);
}
// moduleB.js
import { name, sayHello } from './moduleA.js';

console.log(name); // Output: Alice
sayHello(); // Output: Hello, Alice!

Differenze con CommonJS:

Caratteristica ES Modules CommonJS
Collegamento Statica Dinamica
Caricamento Asincrono (nel browser) Sincrono (per impostazione predefinita)
Export parola chiave export module.exports
Import parola chiave import require funzione
Utilizzo In browser e Node.js (sperimentale) In Node.js